尝试将图像保存到硬盘时出现错误:不支持 URI 格式
本文关键字:错误 不支持 格式 URI 图像 保存 硬盘 | 更新日期: 2023-09-27 18:34:16
这是我使用的功能,我想将图像保存在硬盘上从网站获得的链接中。
public void GetAllImages()
{
// Bing Image Result for Cat, First Page
string url = "http://www.bing.com/images/search?q=cat&go=&form=QB&qs=n";
// For speed of dev, I use a WebClient
WebClient client = new WebClient();
string html = client.DownloadString(url);
// Load the Html into the agility pack
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
// Now, using LINQ to get all Images
/*List<HtmlNode> imageNodes = null;
imageNodes = (from HtmlNode node in doc.DocumentNode.SelectNodes("//img")
where node.Name == "img"
&& node.Attributes["class"] != null
&& node.Attributes["class"].Value.StartsWith("sg_t")
select node).ToList();*/
var imageLinks = doc.DocumentNode.Descendants("img")
.Where(n => n.Attributes["class"].Value == "sg_t")
.Select(n => HttpUtility.ParseQueryString(n.Attributes["src"].Value["amp;url"])
.ToList();
foreach (string node in imageLinks)
{
y++;
//Console.WriteLine(node.Attributes["src"].Value);
richTextBox1.Text += node + Environment.NewLine;
Bitmap bmp = new Bitmap(node);
bmp.Save(@"d:'test'" + y.ToString("D6") + ".jpg");
}
}
在底部的每个im使用位图,但随后im得到错误。 为什么?
您必须先下载图像。您无法像这样保存来自 URI 的图像。使用 WebClient 获取映像的字节数,然后使用该数据创建映像。
像这样:
private System.Drawing.Image GetImage(string URI)
{
WebClient webClient = new WebClient();
byte[] data = webClient.DownloadData(URI);
MemoryStream memoryStream = new MemoryStream(data);
return System.Drawing.Image.FromStream(memoryStream);
}
然后,我建议使用System.Drawing.Image.Save来保存它:http://msdn.microsoft.com/en-us/library/system.drawing.image.save.aspx