簡體   English   中英

檢測PictureBox中的錯誤圖像何時使用

[英]Detecting when error image in PictureBox is used

我在谷歌上找到了這個, 點擊這里 ,有人問了一個類似的問題,收到一個回復​​,他們應該檢查他們的文件是否存在。 但是,我正在從Web鏈接加載圖像,如果A)找不到圖片或B)如果像Photobucket這樣的圖像托管服務顯示“超出帶寬”圖像,則會顯示錯誤圖像。 有沒有辦法檢測是否顯示錯誤圖像或圖像是否無效?

是的,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
  }
}

此事件處理程序也捕獲加載錯誤,因此可能是您要使用的錯誤。

沒有像您希望的那樣檢查有效圖片的標准方法。 “超出帶寬”圖像是計算機眼中完全有效的圖像。

不過你可以嘗試一些技巧來濾除至少一些“錯誤”的圖像:

  • 如果要加載圖像,請設置不進行自動重定向的Web連接。 您可以設置某種語義,如果您被重定向到其他可能超出“帶寬”圖像的地方,則將圖像分類為“無效”。 這種方法的缺點當然是您可能會過濾出重定向后面的圖像並且這些圖像是有效的。
  • 只需檢查Web服務器提供的圖片名稱。 如果你連接到像“ http://test.tld/image.jpg ”這樣的地址但是檢索“bandwidth_exceeded.jpg”或類似的東西,那么情況就應該清楚了。 此方法要求您知道圖像托管商如何命名其“超出帶寬”或“不再可用”圖像。
  • 針對已知“壞”圖像的某種圖像識別檢查。 一個相當復雜的。

你看,那些語義黑名單除了完美之外還有其他所有東西,甚至可能更糟糕地過濾出好的圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM