C# (.NET) में इमेज प्रोसेसिंग: लाइब्रेरीज और प्रैक्टिकल उदाहरण
इमेज प्रोसेसिंग आधुनिक C# (.NET) एप्लिकेशन्स में एक आम काम है। चाहे वह यूजर का अवतार अपलोड करना हो, थंबनेल बनाना हो, वॉटरमार्क लगाना हो या फॉर्मेट कन्वर्ट करना हो - .NET कई शक्तिशाली समाधान प्रदान करता है। इस आर्टिकल में हम मुख्य लाइब्रेरीज, उनकी क्षमताओं और रियल कोड उदाहरणों पर चर्चा करेंगे।
1. स्टैंडर्ड लाइब्रेरी: System.Drawing.Common
ऐतिहासिक रूप से पहली और सबसे प्रसिद्ध लाइब्रेरी System.Drawing.Common है। यह Windows के GDI+ (Graphics Device Interface) तक एक्सेस प्रदान करती है। हालांकि, इसकी कुछ महत्वपूर्ण सीमाएँ हैं:
- यह केवल Windows पर काम करती है (.NET Core/.NET 5+ के लिए
System.Drawing.Commonपैकेज जरूरी है, लेकिन Linux/macOS पर सपोर्ट सीमित है)। - यह हाई-लोड वेब सर्विसेज के लिए ऑप्टिमाइज़ नहीं है (गलत उपयोग से मेमोरी लीक हो सकती है)।
- यह आधुनिक फॉर्मेट (WebP, AVIF) को "आउट ऑफ द बॉक्स" सपोर्ट नहीं करती।
इमेज लोड और रीसाइज करने का उदाहरण:
using System.Drawing;
using System.Drawing.Imaging;
public static void ResizeImage(string sourcePath, string destPath, int newWidth, int newHeight)
{
using (var image = Image.FromFile(sourcePath))
using (var resized = new Bitmap(newWidth, newHeight))
using (var graphics = Graphics.FromImage(resized))
{
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.DrawImage(image, 0, 0, newWidth, newHeight);
resized.Save(destPath, ImageFormat.Jpeg);
}
}
यह कोड सोर्स इमेज को लोड करता है, दिए गए साइज़ का एक नया Bitmap बनाता है और उस पर हाई क्वालिटी के साथ इमेज को ड्रा करता है। सिंपल कामों के लिए यह उपयुक्त है।
2. आधुनिक क्रॉस-प्लेटफॉर्म लाइब्रेरी: ImageSharp (SixLabors)
ImageSharp एक पूरी तरह से मैनेज्ड .NET लाइब्रेरी है जो GDI+ पर निर्भर नहीं करती। यह Windows, Linux और macOS पर काम करती है। मुख्य लाभ:
- शुद्ध C# कोड, बिना किसी नेटिव डिपेंडेंसी के।
- WebP, PNG, JPEG, BMP, GIF, TIFF का सपोर्ट।
- बिल्ट-इन फिल्टर, रोटेशन, क्रॉपिंग, रीसाइजिंग।
- वेब एप्लिकेशन्स के लिए हाई परफॉरमेंस और सुरक्षा।
इंस्टॉलेशन: dotnet add package SixLabors.ImageSharp
रीसाइज और WebP में सेव करने का उदाहरण:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Formats.Webp;
public static void ResizeToWebp(string input, string output, int width, int height)
{
using (var image = Image.Load(input))
{
image.Mutate(x => x.Resize(width, height));
var encoder = new WebpEncoder { Quality = 80 };
image.Save(output, encoder);
}
}
ध्यान दें: Mutate मेथड इमेज में बदलाव सीधे लागू करता है (बिना कॉपी बनाए), जिससे मेमोरी बचती है।
3. ग्राफिक्स इंजन: SkiaSharp
SkiaSharp Skia लाइब्रेरी (Chrome, Android, Flutter में उपयोग) का एक रैपर है। यह विशेष रूप से जटिल 2D ग्राफिक्स के लिए अधिकतम फ्लेक्सिबिलिटी और परफॉरमेंस प्रदान करता है।
- क्रॉस-प्लेटफॉर्म (Windows, Linux, macOS, मोबाइल प्लेटफॉर्म)।
- हार्डवेयर एक्सेलेरेशन (GPU) का सपोर्ट।
- समृद्ध टूलसेट: पथ, ब्रश, शेडर, मास्क।
वॉटरमार्क लगाने का उदाहरण:
using SkiaSharp;
public static void AddWatermark(string imagePath, string watermarkText, string outputPath)
{
using (var input = SKBitmap.Decode(imagePath))
using (var canvas = new SKCanvas(input))
using (var paint = new SKPaint
{
Color = SKColors.White.WithAlpha(128),
TextSize = 48,
IsAntialias = true,
Typeface = SKTypeface.FromFamil