C# (.NET) में इमेज के साथ काम करना: आकार बदलना और क्रॉप करना (resize, crop)
आधुनिक वेब डेवलपमेंट और डेस्कटॉप एप्लिकेशन बनाने में अक्सर इमेज को प्रोग्रामेटिक रूप से प्रोसेस करने की आवश्यकता होती है: प्रीव्यू के लिए उनका आकार बदलना (resize), अनावश्यक किनारों को क्रॉप (crop) करना या किसी विशिष्ट प्रारूप में ढालना। .NET प्लेटफ़ॉर्म इन कार्यों को हल करने के लिए कई दृष्टिकोण प्रदान करता है। इस लेख में हम SixLabors.ImageSharp लाइब्रेरी के साथ काम करने पर विस्तार से चर्चा करेंगे - जो C# में इमेज प्रोसेसिंग के लिए एक शक्तिशाली, क्रॉस-प्लेटफ़ॉर्म टूल है।
ImageSharp क्यों?
पहले मानक समाधान System.Drawing लाइब्रेरी थी, लेकिन इसकी सीमाएँ हैं: यह केवल Windows पर काम करती है, इसमें GDI+ घटकों की आवश्यकता होती है और यह आधुनिक वेब एप्लिकेशन के लिए अनुकूलित नहीं है। ImageSharp में ये कमियाँ नहीं हैं:
- पूरी तरह से प्रबंधित C# कोड में लिखी गई है।
- Windows, Linux, macOS पर काम करती है।
- लोकप्रिय फ़ॉर्मेट को सपोर्ट करती है: JPEG, PNG, BMP, GIF, WebP।
- उच्च प्रदर्शन और सुरक्षा।
लाइब्रेरी की स्थापना
शुरू करने के लिए, एक नया C# प्रोजेक्ट (.NET 6+) बनाएँ और NuGet के माध्यम से पैकेज इंस्टॉल करें:
dotnet add package SixLabors.ImageSharpया Visual Studio पैकेज मैनेजर के माध्यम से: Install-Package SixLabors.ImageSharp।
इमेज का आकार बदलना (Resize)
resize फ़ंक्शन आपको अनुपात बनाए रखते हुए या सटीक आयाम निर्धारित करके इमेज को छोटा या बड़ा करने की अनुमति देता है। एक उदाहरण देखें जहाँ हम एक इमेज लोड करते हैं और उसकी चौड़ाई 300 पिक्सेल तक कम करते हैं, ऊँचाई स्वचालित रूप से समायोजित होती है:
using SixLabors.ImageSharp;using SixLabors.ImageSharp.Processing;
// मूल इमेज लोड करनाusing (Image image = Image.Load("input.jpg")){ // आकार बदलना: चौड़ाई 300, ऊँचाई स्वचालित रूप से गणना की जाती है image.Mutate(x => x.Resize(300, 0));
// परिणाम सहेजना image.Save("output_resize.jpg");}दूसरे पैरामीटर 0 से हम निर्दिष्ट करते हैं कि अनुपात बनाए रखने के लिए ऊँचाई स्वचालित रूप से गणना की जानी चाहिए। यदि सटीक आयाम (जैसे, 300x200) सेट करने हैं, तो दोनों मान निर्दिष्ट करें:
image.Mutate(x => x.Resize(300, 200)); // अनुपात में विकृति संभव हैसटीक आकार के साथ अनुपात बनाए रखने के लिए ResizeMode.Pad या ResizeMode.Crop मोड का उपयोग करें:
image.Mutate(x => x.Resize(new ResizeOptions{ Size = new Size(300, 200), Mode = ResizeMode.Crop // आकार में फिट करने के लिए किनारों को क्रॉप करेगा}));इमेज को क्रॉप करना (Crop)
क्रॉप (crop) आपको मूल इमेज से एक आयताकार क्षेत्र काटने की अनुमति देता है। यह अवतार, थंबनेल बनाने या खाली फ़ील्ड हटाने के लिए उपयोगी है। उदाहरण - हम 200x150 पिक्सेल का केंद्रीय क्षेत्र काटते हैं:
using (Image image = Image.Load("input.jpg")){ // क्रॉप करने के लिए क्षेत्र के निर्देशांक और आकार निर्धारित करें Rectangle cropRect = new Rectangle( x: (image.Width - 200) / 2, // क्षैतिज रूप से केंद्रित करें y: (image.Height - 150) / 2, // लंबवत रूप से केंद्रित करें width: 200, height: 150 );
// क्रॉप करें image.Mutate(x => x.Crop(cropRect));
// परिणाम सहेजें image.Save("output_crop.jpg");}यदि इमेज को मैन्युअल रूप से क्रॉप करना है (जैसे, ऊपरी बाएँ कोने का 100x100):
image.Mutate(x => x.Crop(new Rectangle(0, 0, 100, 100)));संचालन का संयोजन: resize + crop
अक्सर पहले आकार बदलना और फिर वांछित प्रारूप में क्रॉप करना आवश्यक होता है। ImageSharp आपको संचालन को एक श्रृंखला में संयोजित करने की अनुमति देता है:
using (Image image = Image.Load("input.jpg")){ // चरण 1: चौड़ाई 400 पिक्सेल तक कम करें (आनुपातिक रूप से) image.Mutate(x =>