如何从webBrowser控件保存图像?

时间:2016-01-26 02:09:57

标签: c# .net winforms

在form1的顶部,我做了

WebBrowser webbrowser1;

然后在构造函数

webbrowser1 = new WebBrowser();               webbrowser1.Navigate("http://www.ims.gov.il/IMS/tazpiot/RainRadar.htm");
webbrowser1.DocumentCompleted += webbrowser1_DocumentCompleted;

然后在DocumentCompleted事件中

void webbrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (e.Url.AbsoluteUri != webbrowser1.Url.AbsoluteUri)
            {
                return;
            }
            IHTMLDocument2 doc = (IHTMLDocument2)webbrowser1.Document.DomDocument;
            IHTMLControlRange imgRange = (IHTMLControlRange)((HTMLBody)doc.body).createControlRange();

            foreach (IHTMLImgElement img in doc.images)
            {
                imgRange.add((IHTMLControlElement)img);

                imgRange.execCommand("Copy", false, null);

                using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap))
                {
                    bmp.Save(@"E:\newimages\" + img.nameProp);
                }
            }
        }

我正在硬盘上保存20张图像。 但不是我需要的那个。我需要在webBrowser中保存此页面的是此链接中的图像:http://www.ims.gov.il/Ims/Pages/RadarImage.aspx?Row=9&TotalImages=10&LangID=1&Location=

雷达它自我形象。我可以保存为...... 我可以像今天一样使用WebClient ...... 但是WebClient并不是一直都在工作。所以我正在尝试冲浪到网站并从webBrowser获取雷达的图像。但没有成功。

更新

这是我的webclient今天如何下载雷达图像:

private void fileDownloadRadar()
        {
            if (Client.IsBusy == true)
            {
                Client.CancelAsync();
            }
            else
            {
                try
                {

                    Client.DownloadFileAsync(myUri, Path.Combine(combinedTemp)); 
                }
                catch(Exception errors)
                {
                    string errors2 = errors.ToString();
                }

            }
        }

客户端是WebClient

现在我要去下载combinedTemp的目录,我看到下载的文件是空的0kb。

myUri中的网址是:

http://www.ims.gov.il/Ims/Pages/RadarImage.aspx?Row=9&TotalImages=10&LangID=1&Location=

当我把这个链接放在我的chrome中并冲浪到它时,我看到了最新的雷达图像,但是当我在我的硬盘中查看时,它是0kb的下载文件。

而且我会补充说现在没有发生这种情况但不久前几个月前我有一些问题在某些情况下并非所有时间,但在很多时候,当我下载图像时,我有另一个错误,我甚至有一个未解决的问题一年前:Why i'm getting exception: Too many automatic redirections were attempted on webclient?

所以一般来说这是两个问题,但现在问题是下载的文件是0kb。

这是客户完成的事件:

private void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                try
                {
                    client_Error_counter = client_Error_counter + 1;
                    if (client_Error_counter == 5)
                    {
                        Logger.Write("Tried to download radar image file " + client_Error_counter + " times without success");
                        Logger.Write("Error Tried to download radar image file : " + e.Error);
                        client_Error_counter = 0;
                    }
                    else
                    {

                        Client.DownloadFileAsync(myUri, Path.Combine(combinedTemp));
                        Logger.Write("Times tried to download radar image file: " + client_Error_counter);
                        Logger.Write("Error Tried to download radar image file : " + e.Error);
                    }
                }
                catch(Exception errors)
                {
                    string myerr = errors.ToString();
                }
            }

我现在看到我错过了它,当它进入DownloadFileCompleted事件时出现错误:

e.Error show:e.Error = {“尝试了太多的自动重定向。”}

堆栈跟踪:

at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)

这就是我尝试使用WebBrowser的原因。我无法找到解决这个问题的方法“尝试了太多的自动重定向”问题。

这就是我在硬盘上看到文件0kb的原因。

另一件事是今天几个小时前它确实下载了一些雷达图像,但现在再次出现这个错误。

0 个答案:

没有答案