图像从Web URL加载c#
我试图从weburl的“toolStrip”ic#中显示图像。 我使用以下方法来获取图像
WebRequest requestPic5 = WebRequest.Create(icon_path); requestPic5.Timeout = 5000; WebResponse responsePic5 = null; Image Myimg5 = null; if (requestPic5 != null) { responsePic5 = requestPic5.GetResponse(); if (responsePic5 != null) { Myimg5 = Image.FromStream(responsePic5.GetResponseStream()); } }
当Myimg5 = Image.FromStream(responsePic5.GetResponseStream());
时失败Myimg5 = Image.FromStream(responsePic5.GetResponseStream());
抛出exception,但图片仍在url中
但不幸的是,大部分时间它没有正确加载,有时会抛出404错误
响应流还有其他您不一定需要的东西。 你真的只想要imgage文件的原始数据,所以你可以使用:
new MemoryStream(new WebClient().DownloadData("http://address/file.ico"));
可能该网站受到热链接保护。 由于与html页面相比图像尺寸较大,并且网站为其使用的带宽付费,因此这是一种用于保护网站免受其他网站的bsndwidth盗窃的机制。
这个想法是使用某种身份validation,并确保真正的用户要求图像。 这通常通过包含图像的页面上的cookie来完成。 您需要获取这些cookie并将其与您的请求一起发送。 您需要在请求中添加CookieContainer
,然后请求图像所在的页面,最后检索图像(对所有步骤使用相同的请求,将自动添加和使用Cookie)。