2010-03-30 19 views
6

मुझे यह Google, click here पर मिला, जिसने किसी एक समान प्रश्न पूछा, एक प्रतिक्रिया प्राप्त करने के लिए कि उन्हें जांच करनी चाहिए कि उनकी फ़ाइल मौजूद है या नहीं। हालांकि, मैं वेब लिंक से छवियों को लोड कर रहा हूं, जिसमें यह एक त्रुटि छवि प्रदर्शित करता है यदि ए) चित्र नहीं मिला है या बी) यदि, फोटोबकेट जैसी छवि होस्टिंग सेवाओं की तरह, 'बैंडविड्थ से अधिक' छवि प्रदर्शित करता है। क्या यह पता लगाने का कोई तरीका है कि कोई त्रुटि छवि दिख रही है या कोई छवि अमान्य है या नहीं?चित्र बॉक्स में त्रुटि छवि का उपयोग किया जाता है

उत्तर

9

हाँ, LoadCompleted घटना आपको बताता है कि क्या गलत हुआ:

private void pictureBox1_LoadCompleted(object sender, AsyncCompletedEventArgs e) { 
    if (e.Error != null) { 
    // You got the Error image, e.Error tells you why 
    } 
} 

वहाँ भी एक मामले में जहां छवि लोड ठीक से पूरा कर लिया है, लेकिन वहाँ कुछ छवि फ़ाइल के साथ ही गलत था हो सकता है:

private void pictureBox1_Paint(object sender, PaintEventArgs e) { 
    if (pictureBox1.Image == pictureBox1.ErrorImage) { 
    // You got the Error image 
    } 
} 

यह इवेंट हैंडलर लोड त्रुटियों को भी पकड़ता है, इसलिए हो सकता है कि आप इसका उपयोग करना चाहें।

+0

बेशक यह आपको बताएगा कि एक छवि लोड नहीं की जा सकती है (उदाहरण के लिए अलग से 404), लेकिन यह किसी भी छवियों को फ़िल्टर नहीं करेगा, जो कि भेजे गए हैं मेजबान (उदाहरण के लिए 'बैंडविड्थ' छवि पार हो गई है, या एक छवि जो सर्वर भेजती है अगर सर्वर सर्वर पर हटा दी गई थी)। –

+0

+1 और उत्तर के रूप में स्वीकार किया गया, छवि की तुलना में कोड का आपका दूसरा ब्लॉक और त्रुटि इमेज पूरी तरह से काम करता है। – DMan

1

मान्य चित्रों की जांच करने का कोई मानक तरीका नहीं है जैसा आप करना चाहते हैं। 'बैंडविड्थ पार हो गया' छवि कंप्यूटर की आंखों में एक पूरी तरह से वैध तस्वीर है।

फिर भी आप कम से कम कुछ "गलत" छवियों को छान के लिए कुछ चाल की कोशिश कर सकते:

  • आप छवियों को लोड कर रहे हैं, एक वेब कनेक्शन है कि कोई स्वत: रीडायरेक्ट करता है की स्थापना की। यदि आप किसी अन्य स्थान पर रीडायरेक्ट किए जाते हैं, तो संभवतः 'बैंडविड्थ पार हो गया' छवि झूठ बोलने पर आप किसी प्रकार का अर्थपूर्ण स्थापित कर सकते हैं जो छवि को "अमान्य" के रूप में वर्गीकृत करता है। इस विधि का दोष निश्चित रूप से है कि आप संभावित रूप से उन छवियों को फ़िल्टर कर रहे हैं जो पुनर्निर्देशन के पीछे हैं और जो मान्य हैं।
  • बस वेब सर्वर द्वारा दी गई तस्वीर के नाम की जांच करें। यदि आप "http://test.tld/image.jpg" जैसे किसी एड्रेस से कनेक्ट होते हैं लेकिन "bandwidth_exceeded.jpg" या कुछ ऐसा ही पुनर्प्राप्त करते हैं, तो केस स्पष्ट होना चाहिए। इस विधि के लिए यह आवश्यक है कि आप जानते हैं कि छवि होस्टर का नाम 'बैंडविड्थ पार हो गया' या 'अब उपलब्ध नहीं' छवियों का नाम है।
  • ज्ञात 'खराब' छवियों के खिलाफ किसी प्रकार की छवि पहचान जांच। एक बल्कि परिष्कृत एक।

आप देखते हैं कि वे अर्थपूर्ण ब्लैक सूचियां सही चीज़ों की तुलना में हर चीज हैं, शायद खराब छवियों को भी खराब कर दें।

+0

ठीक है, मुझे नहीं लगता कि मुझे अब तक जाने की आवश्यकता है, क्योंकि बैंडविड्थ छवि को पार कर गया है, क्योंकि एक्स एक संभव प्रारूप था? – DMan

+0

ठीक है, तो मैंने आपके प्रश्न को गलत समझा ... –

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