我的C#程序需要一次显示许多可能的图像。图像在网络上,我有一个精确的URL。程序需要从Web加载图像,或者如果先前已加载图像,则从内存/文件加载它(因为之前从Web加载应该已将其保存到内存/文件中)。我该如何实现?我可以使用WebRequest对象从Web上加载,但这还不足以保存它以便以后更快地使用。
WebRequest request = WebRequest.Create(imageURL);
Stream stream = request.GetResponse().GetResponseStream();
pictureBoxFirstPack.Image = Image.FromStream(stream);
答案 0 :(得分:1)
我很确定你应该能够做到这一点:
MemoryStream ms = new MemoryStream();
stream.CopyTo(ms);
Byte[] data = ms.ToArray();
将它作为Byte数组后,您可以将其存储在字典,数据库或任何您喜欢的位置。
答案 1 :(得分:0)
使用Image.Save方法保存下载的图像(按照MSDN中的示例:http://msdn.microsoft.com/en-us/library/9t4syfhh.aspx)
// Construct a bitmap from the button image resource.
Bitmap bmp1 = new Bitmap(typeof(Button), "Button.bmp");
// Save the image as a GIF.
bmp1.Save("c:\\button.gif", System.Drawing.Imaging.ImageFormat.Gif);
检查图像是否已存在于本地存储中的一种可能方法是计算每个下载图像的哈希值并将其保存在字典中
SHA256Managed sha = new SHA256Managed();
byte[] checksum = sha.ComputeHash(stream);
var hash = BitConverter.ToString(checksum).Replace("-", String.Empty);
// Store hash into a dictionary
答案 2 :(得分:0)
您可以使用WebClient下载如下文件:
string fileNameLocally = @"c:\file.jpg";
using(WebClient client = new WebClient())
{
client.DownloadFile(imageURL, fileNameLocally);
//you can also use DownloadAsyncFile this methods do not block the calling thread.
}