परिचय
Aspose.Imaging FOSS for .NET एक मुफ्त, MIT-लाइसेंस्ड, ओपन-सोर्स लाइब्रेरी है .NET डेवलपर्स के लिए जिन्हें यह जानने की जरूरत है कि एक इमेज फ़ाइल is — इसका फ़ॉर्मेट, आयाम, बिट डेप्थ, और फ्रेम काउंट — इसे डिकोड करने की लागत का भुगतान किए बिना। The static ImageProbe क्लास एंट्री पॉइंट है: ProbeFile(path) डिस्क से पढ़ता है, Probe(stream) and Probe(data) एक स्ट्रीम या बाइट एरे को स्वीकार करता है, और DetectFormat(stream) / DetectFormat(data) वापस करता है ImageFormat एनम वैल्यू बिना पूरी ImageInfo, उन कॉलर्स के लिए जिन्हें केवल फ़ॉर्मेट पर शाखा बनाने की आवश्यकता है। हर प्रॉब मेथड एक ImageInfo nullable के साथ ऑब्जेक्ट Width, Height, BitDepth, और FrameCount प्रॉपर्टीज़, केवल तभी भरी जाती हैं जब पता किए गए फॉर्मेट के हेडर में वास्तव में वह मान हो।
यह एक जानबूझकर संकीर्ण टूल है, और यही इसका मकसद है। यह पिक्सेल डिकोड नहीं करता, इमेज रेंडर नहीं करता, या फॉर्मेट्स के बीच रूपांतरण नहीं करता — इसके लिए, .NET के लिए वाणिज्यिक Aspose.Imaging प्रोडक्ट सही चयन है (नीचे ओपन सोर्स & लाइसेंसिंग के तहत लिंक किया गया)। .NET के लिए Aspose.Imaging FOSS जो करता है वह बहुत छोटा, बहुत अधिक सामान्य कार्य है: “यह कौन सा फॉर्मेट है, और इसका आकार कितना है?” का उत्तर जितनी तेज़ और सुरक्षित हो सके देना, उन समस्याओं के वर्ग के लिए जहाँ पूर्ण डिकोडिंग व्यर्थ कार्य होगा: अपलोड की वैधता जांचना, थंबनेल लेआउट का आकार तय करना, मिश्रित फ़ाइलों की बैच का ट्रायेज़ करना, या प्री-प्रोसेसिंग जांच के लिए DICOM हेडर फ़ील्ड पढ़ना।
यह लाइब्रेरी MIT-लाइसेंस वाली है, शून्य बाहरी निर्भरताओं के साथ, और netstandard2.0 तथा net8.0 दोनों को लक्षित करती है — ओपन-सोर्स और वाणिज्यिक उपयोग दोनों के लिए मुफ्त, बिना किसी रॉयल्टी या पुनर्वितरण प्रतिबंध के।
मुख्य विशेषताएँ
फ़ाइल का प्रोब करने के तीन तरीके
ImageProbe फ़ाइल-पथ, स्ट्रीम, और बाइट-एरे प्रवेश बिंदु प्रदान करता है, इसलिए यह आपके पाइपलाइन में जहाँ भी इमेज डेटा पहले से मौजूद हो — डिस्क पर, मेमोरी में, या वायर पर आ रहा हो — अनुकूल है। जब आपको केवल फॉर्मेट पर शाखा बनानी हो तो DetectFormat पूर्ण ImageInfo बनाने को छोड़ देता है।
using Aspose.Imaging.Foss;
var fromPath = ImageProbe.ProbeFile("photo.jpg");
var fromBytes = ImageProbe.Probe(byteArray);
var fromStream = ImageProbe.Probe(stream);
var formatOnly = ImageProbe.DetectFormat(byteArray); // ImageFormat only, no header parse
संरचित, ईमानदार परिणाम
ImageInfo Format को उजागर करता है (एक ImageFormat enum मान, जो हेडर पहचाने जाने के बाद हमेशा सेट होता है) साथ ही nullable Width, Height, BitDepth, और FrameCount। “Nullable” यहाँ वास्तविक काम कर रहा है: फ़ील्ड पॉपुलेशन वास्तव में फ़ॉर्मेट के अनुसार बदलता है, और ImageInfo कभी भी ऐसा मान नहीं बनाता जो फ़ॉर्मेट के हेडर में न हो। उपयोग से पहले null की जाँच करना सही पैटर्न है, न कि एक रक्षाात्मक बाद की सोच।
var info = ImageProbe.ProbeFile("scan.dcm");
if (info.Width.HasValue && info.Height.HasValue)
{
Console.WriteLine($"{info.Format}: {info.Width}x{info.Height}");
}
11 फ़ॉर्मेट, जिसमें तीन ऐसे हैं जो FOSS .NET स्पेस में अन्य कुछ नहीं पहचानते
PNG, JPEG, GIF, BMP, WebP (lossy, lossless, और extended), ICO, TIFF, PSD, EMF, WMF, और DICOM। फ़ील्ड का भरण इरादे से फॉर्मेट के अनुसार अलग होता है, न कि उपेक्षा के कारण — PNG में चौड़ाई, ऊँचाई, बिट डेप्थ शामिल होते हैं, and फ़्रेम काउंट (हालाँकि FrameCount एक हार्डकोडेड है 1, वास्तविक animated-PNG फ़्रेम डिटेक्शन नहीं है); FrameCount डायरेक्टरी में एम्बेडेड आइकन साइजों की वास्तविक गिनती है, और एक 0 ICO निर्देशिका प्रविष्टि के आयाम फ़ील्ड में बाइट का अर्थ 256px है, फ़ॉर्मेट स्पेसिफ़िकेशन के अनुसार; TIFF’s FrameCount फ़ाइल की IFD चेन की सीमित यात्रा को दर्शाता है, प्रति पृष्ठ एक IFD।
इन ग्यारह में से तीन — PSD, EMF/WMF, और DICOM — के पास कोई अन्य मुफ्त, ओपन-सोर्स .NET डिटेक्टर नहीं है जिसके बारे में हमें पता हो, जो इस लाइब्रेरी के अस्तित्व का एक वास्तविक कारण है।
WMF और EMF: दो लेगेसी फ़ॉर्मेट, दो अलग सीमाएँ
नॉन-प्लेसेबल WMF अभी भी सही ढंग से ImageFormat.Wmf के रूप में पहचाना जाता है, लेकिन केवल प्लेसेबल WMF आयाम भरता है — हेडर के यूनिट्स-पर-इंच बाउंड्स से हार्डकोडेड 96 DPI रूपांतरण के माध्यम से, क्योंकि WMF स्वयं कोई निश्चित पिक्सेल आकार नहीं रखता। EMF में कोई स्पष्ट चौड़ाई/ऊँचाई फ़ील्ड नहीं है; इसके आयाम EMF हेडर में rclBounds डिवाइस-स्पेस आयत से आते हैं। दोनों को ईमानदारी से ImageInfo में दर्शाया गया है: जब कोई मान निकाला नहीं जा सकता, तो प्रॉपर्टी null ही रहती है, अनुमान लगाने के बजाय।
व्यूअर के बिना DICOM हेडर पार्सिंग
ImageProbe DICOM हेडर को Implicit VR Little Endian और Explicit VR Little/Big Endian ट्रांसफर सिंटैक्स में पढ़ता है, Rows को Height में, Columns को Width में, और BitsAllocated को BitDepth में निकालता है — कोई DICOM व्यूअर या बाहरी इमेजिंग निर्भरता आवश्यक नहीं। पार्सिंग डिज़ाइन द्वारा रूढ़िवादी है: एक अनिर्दिष्ट-लंबाई क्रम तत्व सामग्री का अनुमान लगाने के बजाय वॉक को रोक देता है, इसलिए आंशिक रूप से समझी गई DICOM फ़ाइल एक गलत के बजाय आंशिक ImageInfo में गिरती है।
गलत या कटे हुए इनपुट पर कभी अपवाद नहीं फेंकता
Probe अविश्वसनीय, आंशिक, या उड़ान में रहने वाली फ़ाइलों के लिए बनाया गया है। यदि कोई फ़ाइल फ़ॉर्मेट की सिग्नेचर से मेल खाती है लेकिन उसका हेडर पूरी तरह से पार्स नहीं हो पाता — एक कटे हुआ डाउनलोड, एक भ्रष्ट अपलोड — तो परिणाम केवल पता लगाए गए Format को ले जाता है, न कि एक अपवाद को।
byte[] truncated = fullFileBytes[..^3];
var info = ImageProbe.Probe(truncated);
// info.Format is still populated; other fields may be null
त्वरित प्रारंभ
पैकेज स्थापित करें, फिर डिस्क से फ़ाइल की जाँच करें ताकि एक ही कॉल में उसके पहचाने गए फ़ॉर्मेट, आयाम, बिट गहराई, और फ़्रेम गिनती को पढ़ा जा सके, उसके बाद कच्चे बाइट्स का उपयोग करके केवल फ़ॉर्मेट की जाँच करें:
git clone https://github.com/aspose-imaging-foss/Aspose.Imaging-FOSS-for-.NET.git
cd Aspose.Imaging-FOSS-for-.NET
dotnet buildusing Aspose.Imaging.Foss;
var info = ImageProbe.ProbeFile("photo.jpg");
Console.WriteLine($"{info.Format}: {info.Width}x{info.Height}, {info.BitDepth}-bit, " +
$"{info.FrameCount ?? 0} frame(s)");
// Format-only detection when dimensions aren't needed
var bytes = File.ReadAllBytes("photo.jpg");
var format = ImageProbe.DetectFormat(bytes);
समर्थित फ़ॉर्मेट्स
Aspose.Imaging FOSS के लिए .NET detects नीचे दिए गए सभी 11 फ़ॉर्मैट और हेडर-लेवल मेटाडेटा पढ़ता है — यह पिक्सेल डेटा को डिकोड नहीं करता, इसलिए रिपोर्ट करने के लिए कोई “write” क्षमता नहीं है। फ़ील्ड का भरना फ़ॉर्मेट के अनुसार बदलता है; ऊपर की मुख्य विशेषताएँ में विस्तृत विभाजन देखें।
| फ़ॉर्मेट | एक्सटेंशन | Detected | चौड़ाई / ऊँचाई | बिट डेप्थ | फ़्रेम काउंट |
|---|---|---|---|---|---|
| PNG | .png | ✓ | ✓ | ✓ | ✓ |
| JPEG | .jpg / .jpeg | ✓ | ✓ | ✓ | — |
| GIF | .gif | ✓ | ✓ | — | ✓ |
| BMP | .bmp | ✓ | ✓ | ✓ | — |
| WebP | .webp | ✓ | ✓ | — | — |
| ICO | .ico | ✓ | ✓ | ✓ | ✓ |
| TIFF | .tif / .tiff | ✓ | ✓ | ✓ | ✓ |
| PSD | .psd | ✓ | ✓ | ✓ | — |
| EMF | .emf | ✓ | ✓ (सीमाओं से) | — | — |
| WMF | .wmf | ✓ | ✓ (केवल प्लेसएबल, 96 DPI) | — | — |
| DICOM | .dcm | ✓ | ✓ (पंक्तियाँ/स्तंभ) | ✓ (BitsAllocated) | — |
ओपन सोर्स & लाइसेंसिंग
Aspose.Imaging FOSS for .NET MIT-लाइसेंस्ड है और कोई बाहरी निर्भरताएँ नहीं हैं। MIT लाइसेंसिंग ओपन-सोर्स और व्यावसायिक दोनों प्रोजेक्ट्स में उपयोग की अनुमति देती है, बिना किसी royalty या पुनर्वितरण पर प्रतिबंध के। स्रोत GitHub पर उपलब्ध है। इसे केवल फ़ॉर्मेट डिटेक्शन के लिए ही सीमित किया गया है — इन इमेज फ़ॉर्मेट्स को डिकोड करने, संपादित करने या बदलने के लिए, Aspose.Imaging देखें .NET — एंटरप्राइज़ प्रोडक्ट।