如何在收藏中保存图像并在图片框中加载
本文关键字:加载 保存 收藏 图像 | 更新日期: 2023-09-27 18:14:53
我声明了一个列表来存储图像的url
并调用LoadBitmap方法来获取图像的流。
//this list to store url list
List<string> imageFileList=new List<string>();
//this list to store return image stream
List<Stream> imageFiles = new List<Stream>();
imageFileList.Add("some picture url");
imageFileList.Add("some picture url");
imageFileList.ForEach(delegate(String imgurl)
{
Stream tempFile = LoadBitmap(imgurl);
imageFiles.Add(tempFile);
tempFile.Dispose();
});
private Stream LoadBitmap(string imageUrl)
{
Stream image;
HttpWebRequest request =(HttpWebRequest)WebRequest.Create(imageUrl);
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
image=stream;
}
return image;
}
我将图像流存储在列表中。
然后在picturebox
foreach (Stream imageFile in imageFileList)
{
PictureBox eachPictureBox = new PictureBox();
eachPictureBox.SizeMode = PictureBoxSizeMode.AutoSize;
//Load Image from resource
eachPictureBox.Image = Image.FromStream(imageFile);
}
但是当程序运行到" eachPictureBox.Image = Image.FromStream(imageFile);
"时
这一行会出现一个错误:webeexception .
我也尝试List<Image>
和imageList
来存储图像,然后再次发生错误。
有人知道怎么解决这个问题吗?
您已经处理了流,然后您正试图从流中获取图像。不要处理流或将图像存储在列表中,并在需要时使用它。例如,您可以使用这样的代码:
List<Image> images = new List<Image>();
...
using (var s = new System.IO.FileStream(imageFilePath, System.IO.FileMode.Open))
{
images.Add(Image.FromStream(s));
}
然后,当您需要使用图像时,只需从列表中获取它,例如:
pictureBox1.Image = images[0];