如何在收藏中保存图像并在图片框中加载

本文关键字:加载 保存 收藏 图像 | 更新日期: 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];