C# में इमेज प्रोसेसिंग: रीसाइज़ और क्रॉप (resize, crop) करना सीखें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# में इमेज के साथ काम करना: आकार बदलना और क्रॉप करना (resize, crop)

आधुनिक वेब डेवलपमेंट और desktop एप्लिकेशन में अक्सर इमेज को प्रोग्रामेटिक रूप से प्रोसेस करने की आवश्यकता होती है: लोडिंग स्पीड बढ़ाने के लिए उन्हें छोटा करना, थंबनेल बनाना या अनावश्यक किनारों को क्रॉप करना। .NET इकोसिस्टम में इन कार्यों को हल करने के कई तरीके हैं। इस लेख में, हम C# में इमेज का आकार बदलने (resize) और क्रॉप करने (crop) के दो मुख्य तरीकों पर चर्चा करेंगे: क्लासिक System.Drawing और आधुनिक क्रॉस-प्लेटफ़ॉर्म SixLabors.ImageSharp।

1. System.Drawing का उपयोग (Windows Forms / .NET Framework)

यह क्लासिक तरीका .NET Framework और .NET Core/5+ (Linux/macOS पर सीमाओं के साथ) में उपलब्ध है। यह System.Drawing नेमस्पेस और Bitmap क्लास के माध्यम से काम करता है। पुराने प्रोजेक्ट या Windows-only एप्लिकेशन के लिए उपयुक्त है।

उदाहरण: अनुपात बनाए रखते हुए आकार बदलना

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

public static Bitmap ResizeImage(Image image, int newWidth, int newHeight)
{
    var destRect = new Rectangle(0, 0, newWidth, newHeight);
    var destImage = new Bitmap(newWidth, newHeight);

    using (var graphics = Graphics.FromImage(destImage))
    {
        graphics.CompositingMode = CompositingMode.SourceCopy;
        graphics.CompositingQuality = CompositingQuality.HighQuality;
        graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
        graphics.SmoothingMode = SmoothingMode.HighQuality;
        graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;

        using (var wrapMode = new ImageAttributes())
        {
            wrapMode.SetWrapMode(WrapMode.TileFlipXY);
            graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
        }
    }
    return destImage;
}

// उपयोग:
using (var original = Image.FromFile("input.jpg"))
{
    using (var resized = ResizeImage(original, 800, 600))
    {
        resized.Save("output.jpg", ImageFormat.Jpeg);
    }
}

उदाहरण: इमेज को क्रॉप करना

public static Bitmap CropImage(Image source, Rectangle cropArea)
{
    var bmp = new Bitmap(cropArea.Width, cropArea.Height);
    using (var g = Graphics.FromImage(bmp))
    {
        g.DrawImage(source, new Rectangle(0, 0, bmp.Width, bmp.Height),
                    cropArea, GraphicsUnit.Pixel);
    }
    return bmp;
}

// उपयोग:
var cropRect = new Rectangle(100, 50, 300, 200); // X, Y, Width, Height
using (var cropped = CropImage(Image.FromFile("input.jpg"), cropRect))
{
    cropped.Save("cropped.jpg", ImageFormat.Jpeg);
}

2. SixLabors.ImageSharp (क्रॉस-प्लेटफ़ॉर्म .NET)

SixLabors.ImageSharp एक आधुनिक, पूरी तरह से प्रबंधित इमेज प्रोसेसिंग लाइब्रेरी है जो .NET Core, .NET 5/6/7+ और .NET Framework पर काम करती है। यह Windows API पर निर्भर नहीं है, इसलिए यह वेब एप्लिकेशन (ASP.NET Core), कंसोल यूटिलिटी और Docker कंटेनर के लिए आदर्श है।

NuGet के माध्यम से इंस्टॉलेशन:

dotnet add package SixLabors.ImageSharp

उदाहरण: अनुपात बनाए रखते हुए आकार बदलना

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;

public static void ResizeImageSharp(string inputPath, string outputPath, int width, int height)
{
    using (var image = Image.Load(inputPath))
    {
        // ResizeMode.Pad — इमेज को फिट करता है, पारदर्शी/सफेद बॉर्डर जोड़ता है
        // ResizeMode.Crop — दिए गए आकार में क्रॉप करता है
        // ResizeMode.Max — अनुपात बनाए रखता है, आयत में फिट करता है
        image.Mutate(x => x.Resize(width, height, KnownResamplers.Lanczos3));
        image.Save(outputPath);
    }
}

// अनुपात बनाए रखने का उदाहरण (स्वचालित ऊंचाई गणना):
public static void ResizeWithAspectRatio(string inputPa                    

अनुशंसाएँ