2012-01-13 13 views
6

मैं कैसे निर्धारित करूं कि मेरे पास कच्चे बाइट्स के रूप में एक छवि दूषित है या नहीं। क्या कोई ओपनसोर्स लाइब्रेरी है जो इस समस्या को सी # में एकाधिक प्रारूपों के लिए संभालती है?छवि पढ़ें और यह निर्धारित करें कि इसका भ्रष्ट सी #

धन्यवाद

+0

आपको किस छवि प्रारूप का समर्थन करने की आवश्यकता है? यदि यह केवल मूल 4 (बीएमपी/पीएनजी/जीआईएफ/जेपीजी) है तो आप बिटमैप क्लास का उपयोग कर सकते हैं और बस उन्हें लोड करने का प्रयास कर सकते हैं। – Will

+0

संभावित डुप्लिकेट [मैं सी #/.NET में एक जेपीईजी छवि को कैसे मान्य कर सकता हूं दूषित नहीं है] (http://stackoverflow.com/questions/1173349/how-do-i-validate-a-jpeg-image-in- c-sharp-net-is-not-corrupted) – V4Vendetta

+0

मैंने प्रश्न संपादित किया है। –

उत्तर

11

कोशिश एक 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; 
    } 
} 
+0

खैर मेरे पास कच्चे बाइट हैं ... इसलिए मैंने प्रश्न –

+0

ठीक संपादित किया है। ठीक दिखता है कि मुझे बस इतना ही चाहिए! धन्यवाद। –

+0

यह देखभाल के साथ इस्तेमाल किया जाना चाहिए। यह महत्वपूर्ण है कि आप * का उपयोग * के साथ बनाए गए बिटमैप को छोड़ दें। अन्यथा यह संभव है कि आप बड़ी संख्या में फाइलों की जांच करते समय आउटऑफमेमरी अपवाद प्राप्त करेंगे क्योंकि सिस्टम संसाधनों से बाहर हो गया था और इसलिए नहीं कि छवि दूषित है। – Indy9000

0

आप एक विचार लेने के लिए इन लिंक देख सकते हैं। पहला यहां है; Validate Images

और दूसरा यहां है; How to check corrupt TIFF images

और क्षमा करें, मुझे इसके लिए कोई बाहरी पुस्तकालय नहीं पता है।

संबंधित मुद्दे