检测webbrowser控制文档中的损坏图像?

时间:2016-10-07 18:41:39

标签: vb.net webbrowser-control

有没有办法检测图像是否未在web浏览器控件中加载/中断?我从像这样的文件加载html:

这是一些html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
  <HEAD>
    <META content="text/html; charset=unicode" http-equiv=Content-Type>
    <META name=GENERATOR content="MSHTML 11.00.10586.589">
  </HEAD>
  <BODY>
    <A href="https://web.archive.org/web/20120124023601/http://www.flatfeets.com/wp-content/uploads/2012/01/shoes-for-flat-feet.jpg">
      <IMG title="shoes for flat feet" class="alignleft size-medium wp-image-18" alt="" src="https://web.archive.org/web/20120124023601im_/http://www.flatfeets.com/wp-content/uploads/2012/01/shoes-for-flat-feet-300x238.jpg">
    </A>
  </BODY>
</HTML>

简单地将其加载到webbrowser

webbrowser1.DocumentText = thehtml

我希望能够检测图像是否已正确加载。这适用于页面上的所有图像。

1 个答案:

答案 0 :(得分:0)

您可以为html文件中的每个图像创建单独的WebClient请求,然后查看是否有任何返回html响应错误代码。

您首先必须解析html并列出所有图片网址。我建议使用像HTML Agility Pack这样的软件包来轻松解析图片网址。然后,您可以使用此代码来识别任何错误路径。

WebClient requester = new WebClient();
foreach (string url in urls)
{
    try
    {
         Byte[] imageBytes = requester.DownloadData(url);                    
    }
    catch(Exception ex)
    {
         //Do something here to indicate that the image file doesn't exist or couldn't be downloaded
    }
}

您还可以将字节数组转换为图像,然后确保它是RGB编码的,因为这是唯一可以在Web浏览器中可靠显示的编码。