मैं कैसे निर्धारित करूं कि मेरे पास कच्चे बाइट्स के रूप में एक छवि दूषित है या नहीं। क्या कोई ओपनसोर्स लाइब्रेरी है जो इस समस्या को सी # में एकाधिक प्रारूपों के लिए संभालती है?छवि पढ़ें और यह निर्धारित करें कि इसका भ्रष्ट सी #
धन्यवाद
मैं कैसे निर्धारित करूं कि मेरे पास कच्चे बाइट्स के रूप में एक छवि दूषित है या नहीं। क्या कोई ओपनसोर्स लाइब्रेरी है जो इस समस्या को सी # में एकाधिक प्रारूपों के लिए संभालती है?छवि पढ़ें और यह निर्धारित करें कि इसका भ्रष्ट सी #
धन्यवाद
कोशिश एक GDI + फ़ाइल से बिटमैप बनाने के लिए। यदि बिटमैप ऑब्जेक्ट बनाना विफल रहता है, तो आप मान सकते हैं कि छवि दूषित है। जीडीआई + file formats की संख्या का समर्थन करता है: बीएमपी, जीआईएफ, जेपीईजी, एक्सिफ, पीएनजी, टीआईएफएफ।
कुछ इस समारोह की तरह काम करना चाहिए:
public bool IsValidGDIPlusImage(string filename)
{
try
{
using (var bmp = new Bitmap(filename))
{
}
return true;
}
catch(Exception ex)
{
return false;
}
}
आप Exception
करने के लिए सिर्फ ArgumentException
सीमित करने के लिए सक्षम हो सकता है, लेकिन मैं स्विच करने से पहले कि पहले के साथ प्रयोग होता है।
संपादित
आप एक byte[]
है, तो यह काम करना चाहिए:
public bool IsValidGDIPlusImage(byte[] imageData)
{
try
{
using (var ms = new MemoryStream(imageData))
{
using (var bmp = new Bitmap(ms))
{
}
}
return true;
}
catch (Exception ex)
{
return false;
}
}
खैर मेरे पास कच्चे बाइट हैं ... इसलिए मैंने प्रश्न –
ठीक संपादित किया है। ठीक दिखता है कि मुझे बस इतना ही चाहिए! धन्यवाद। –
यह देखभाल के साथ इस्तेमाल किया जाना चाहिए। यह महत्वपूर्ण है कि आप * का उपयोग * के साथ बनाए गए बिटमैप को छोड़ दें। अन्यथा यह संभव है कि आप बड़ी संख्या में फाइलों की जांच करते समय आउटऑफमेमरी अपवाद प्राप्त करेंगे क्योंकि सिस्टम संसाधनों से बाहर हो गया था और इसलिए नहीं कि छवि दूषित है। – Indy9000
आप एक विचार लेने के लिए इन लिंक देख सकते हैं। पहला यहां है; Validate Images
और दूसरा यहां है; How to check corrupt TIFF images
और क्षमा करें, मुझे इसके लिए कोई बाहरी पुस्तकालय नहीं पता है।
आपको किस छवि प्रारूप का समर्थन करने की आवश्यकता है? यदि यह केवल मूल 4 (बीएमपी/पीएनजी/जीआईएफ/जेपीजी) है तो आप बिटमैप क्लास का उपयोग कर सकते हैं और बस उन्हें लोड करने का प्रयास कर सकते हैं। – Will
संभावित डुप्लिकेट [मैं सी #/.NET में एक जेपीईजी छवि को कैसे मान्य कर सकता हूं दूषित नहीं है] (http://stackoverflow.com/questions/1173349/how-do-i-validate-a-jpeg-image-in- c-sharp-net-is-not-corrupted) – V4Vendetta
मैंने प्रश्न संपादित किया है। –