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

时间:2016-10-26 09:01:26

标签: c# winforms

我宣布一个列表来存储图片的网址 并调用“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);”时 此行将发生错误:WebException。
我还尝试List<Image>imageList来存储图像然后再次出现错误 任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您已经处理了流,然后您正尝试从流中获取图像。不要处理流或将“存储图像”存储在列表中,并在需要时使用它。例如,您可以使用此类代码:

/images/

然后,当您需要使用图像时,只需从列表中获取它,例如:

List<Image> images = new List<Image>();
...
using (var s = new System.IO.FileStream(imageFilePath, System.IO.FileMode.Open))
{
    images.Add(Image.FromStream(s));
}