如何在PictureBox中的流(响应) - 特定URL显示图像

时间:2014-05-20 16:40:14

标签: c# stream picturebox httpwebresponse

这是我的代码:

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.flowercity.com/");
    req.Method = "GET";
    req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    req.ContentType = "text/html; charset=utf-8";
    req.Timeout = 25000;

    HttpWebResponse res = (HttpWebResponse)req.GetResponse();

    Stream Stream = res.GetResponseStream();
    StreamReader reader = new StreamReader(Stream);
    string reader_str = reader.ReadToEnd();

如何在Stream中抓取加载的图像并在PictureBox中逐个显示

编辑1:
请看我的网址,它不是图片,它是一个网站,我们在Stream中有一个网站 所以下面的代码不起作用:

    Image img = Image.FromStream(Stream);
    PictureBox1.Image = img;

编辑2:
我无法使用HtmlAgilityPack获取图片网址 每张图片都没有特定的网址,需要在流中显示之前加载的图片

1 个答案:

答案 0 :(得分:2)

正如vcsjones的评论中所述,您的流是网站索引页面的流。其中包括图像标签。就像浏览器为您导航到相关网站时一样,您需要单独下载图像。

最可靠的方法是使用正则表达式搜索这些链接的网页(您在示例代码中加载的网页)。您显然可以尝试将页面加载为XML文档,但XML解析器的有效性非常严格。遗憾的是,大多数网页作者对网页的“松散”搜索可能效果最差。

如果您提供直接图片链接,您的代码应该可以使用。您现在面临的挑战是从您正在加载的页面获取这些直接链接。

修改

您的网页如下所示:

<html>
<title>welcome to the flower page</title>
<img src="flower.jpg"/>
</html>

(为简单起见缩短了)

您需要仔细阅读文本,找到图像存储在网络服务器上的位置,然后打开单独的http连接以下载每个图像。