कोर API

कोर API

Aspose.Imaging FOSS for .NET’s पूरी सार्वजनिक सतह तीन वर्गों में विभाजित है: ImageProbe (स्थैतिक मुखौटा), ImageInfo (परिणाम मान), और ImageFormat (फ़ॉर्मेट enum). यह पृष्ठ बताता है कि वे अनुबंध के रूप में कैसे साथ मिलते हैं, per-feature tour में विशेषताएँ और कार्यक्षमताएँ.


तीन-क्लास अनुबंध

  • ImageProbe — स्थैतिक, बिना स्थिति के। प्रत्येक कॉल स्वतंत्र है; कॉन्फ़िगर करने या निपटाने के लिए कुछ नहीं है।
  • ImageInfo — सील्ड, अपरिवर्तनीय। सभी पाँच गुण (Format, Width, Height, BitDepth, FrameCount).
  • ImageFormat — प्रत्येक पहचाने गए फ़ॉर्मेट के लिए एक मान वाला enum, साथ ही Unknown.
using Aspose.Imaging.Foss;

var info = ImageProbe.ProbeFile("photo.jpg");
ImageFormat format = info.Format;   // always set
int? width = info.Width;            // set only when the format's header carries it

सीधे ImageInfo का निर्माण

ImageInfo का कंस्ट्रक्टर सार्वजनिक है — केवल format आवश्यक है, अन्य सभी पैरामीटर null पर डिफ़ॉल्ट होते हैं। यह उन यूनिट टेस्टों के लिए उपयोगी है जिन्हें वास्तविक फ़ाइल को जांचे बिना एक स्टैंड-इन परिणाम की आवश्यकता होती है:

using Aspose.Imaging.Foss;

// Fake a PNG result for a test double, with no dimensions
var fakeInfo = new ImageInfo(ImageFormat.Png);

// Fake a fully-populated result
var fullInfo = new ImageInfo(ImageFormat.Gif, width: 64, height: 48, bitDepth: 8, frameCount: 3);

इसके अनुरूप कोई तरीका नहीं है mutate an ImageInfo निर्माण के बाद — हर प्रॉपर्टी केवल-प्राप्त (गेट-ओनली) है, इसलिए एक प्रोब किया गया या निर्मित इंस्टेंस को बिना रक्षा प्रतिलिपि (डिफेन्सिव कॉपी) के पास किया जा सकता है और कैश किया जा सकता है।


सही ओवरलोड चुनना

Overloadउपयोग करें जब
ImageProbe.ProbeFile(path)आपके पास एक फ़ाइल पाथ है और आप पूर्ण ImageInfo चाहते हैं
ImageProbe.Probe(stream)आपके पास पहले से ही एक खुला Stream (सीक करने योग्य या नहीं) है और आप पूर्ण ImageInfo चाहते हैं
ImageProbe.Probe(data)आपके पास पहले से ही मेमोरी में बाइट्स हैं और आप पूर्ण ImageInfo चाहते हैं
ImageProbe.DetectFormat(stream) / (data)आपको केवल ImageFormat पर शाखा बनानी है — फॉर्मेट सिग्नेचर के आगे हेडर पार्सिंग को छोड़ दें

ProbeFile स्वयं फ़ाइल को खोलता और पढ़ता है — केवल Probe(stream) को कॉल करने के लिए पहले FileStream खोलने की ज़रूरत नहीं है।


डायरेक्टरी का बैच-प्रोबिंग

क्योंकि ImageProbe कभी थ्रो नहीं करता, एक डायरेक्टरी स्कैन इसे कसकर लूप में बिना प्रति-फ़ाइल try/catch के कॉल कर सकता है:

using Aspose.Imaging.Foss;

foreach (var path in Directory.GetFiles("incoming"))
{
    var info = ImageProbe.ProbeFile(path);

    if (info.Format == ImageFormat.Unknown)
    {
        Console.WriteLine($"{path}: not a recognized image format, skipping");
        continue;
    }

    Console.WriteLine($"{path}: {info.Format} {info.Width}x{info.Height}");
}

जो भी फ़ाइल का हेडर 11 पहचाने गए फ़ॉर्मैट्स में से किसी से मेल नहीं खाता, वह थ्रो करने के बजाय ImageFormat.Unknown को रेज़ॉल्व करता है — ऊपर का लूप कभी भी कैच ब्लॉक की आवश्यकता नहीं रखता।


न कभी-थ्रो करने का अनुबंध

यह आकस्मिक व्यवहार नहीं है — यह API अनुबंध का जानबूझकर हिस्सा है। यदि किसी पहचाने गए फ़ॉर्मैट का हेडर पार्सिंग के दौरान ट्रंकेट या खराब रूप से बना हो, तो भी ImageProbe एक ImageInfo लौटाता है जिसमें Format उस फ़ॉर्मैट पर सेट होता है जिसे उसने पहचाना था; यह कॉलर को कोई पार्स अपवाद नहीं पहुंचाता। केवल Format ही गारंटीकृत है — बाकी सभी प्रॉपर्टीज़ को वैकल्पिक मानें चाहे कौन सा फ़ॉर्मैट पहचाना गया हो।


सामान्य समस्याएँ

समस्याकारणसमाधान
निर्मित ImageInfo वास्तविक प्रोब परिणाम से मेल नहीं खाताहाथ से निर्मित उदाहरण फ़ील्ड्स के बीच सुसंगतता को मान्य नहीं करते हैंहाथ से निर्माण केवल परीक्षण डबल्स के लिए उपयोग करें, वास्तविक फ़ाइलों की जाँच का विकल्प न बनें
DetectFormat पर्याप्त होता तो Probe को कॉल करनाकेवल फ़ॉर्मेट की आवश्यकता होने पर अनावश्यक हेडर पार्सिंगयदि आप कभी Width/Height/BitDepth/FrameCount नहीं पढ़ते हैं तो DetectFormat का उपयोग करें
एक फ़ाइल के लिए जिसे आप समर्थित होने की आशा करते हैं, Unknown फ़ॉर्मेटहेडर 11 मान्यता प्राप्त सिग्नेचर में से किसी से मेल नहीं खाता, या फ़ाइल पूरी तरह से अलग फ़ॉर्मेट की हैफ़ाइल की पुष्टि करें समर्थित फ़ॉर्मेट सूची

FAQ

क्या मैं ImageInfo या ImageProbe को सबक्लास कर सकता हूँ?

नहीं। ImageInfo sealed है और ImageProbe static है — दोनों को सबक्लासिंग या विरासत के माध्यम से इंस्टैंसिएशन के लिए डिज़ाइन नहीं किया गया है।

क्या ImageProbe थ्रेड-सुरक्षित है?

ImageProbe कॉल्स के बीच कोई परिवर्तनशील स्थिति नहीं रखता — Probe, ProbeFile, या DetectFormat में प्रत्येक कॉल स्वतंत्र है, जिससे कई थ्रेड्स से समकालिक कॉल्स सुरक्षित होते हैं।

क्या मुझे किसी चीज़ को डिस्पोज़ करने की आवश्यकता है?

नहीं। ImageProbe के पास अपने स्वयं के IDisposable संसाधन नहीं हैं। यदि आप कोई Stream पास करते हैं जिसे आपने स्वयं खोला है, तो आप उस स्ट्रीम को डिस्पोज़ करने के लिए जिम्मेदार रहते हैं — Probe(stream) इसे बंद नहीं करता।


API Reference सारांश

Class / Methodविवरण
ImageProbe.ProbeFile(path)पथ द्वारा फ़ाइल को प्रोब करें
ImageProbe.Probe(stream)एक Stream को प्रोब करें
ImageProbe.Probe(data)एक byte[] को प्रोब करें
ImageProbe.DetectFormat(stream)केवल फ़ॉर्मेट, एक Stream से
ImageProbe.DetectFormat(data)केवल फ़ॉर्मेट, एक byte[] से
ImageInfo(format, width, height, bitDepth, frameCount)सार्वजनिक कंस्ट्रक्टर — केवल format आवश्यक है
ImageInfo.Format / .Width / .Height / .BitDepth / .FrameCountकेवल पढ़ने योग्य परिणाम गुण
ImageFormatEnum: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom

यह भी देखें

 हिन्दी