C#从阵列保存图像

时间:2011-04-10 00:05:50

标签: c# image bitmap save-image

我有一系列我已调整大小的图像,我想要做的就是直接从数组中保存它们......

foreach (Image I in Resizedimages)
            {
                string f = Environment.GetFolderPath(Environment.SpecialFolder.Desktop).ToString() + "\\NewImages\\" + names[n];

                I.Save(f, System.Drawing.Imaging.ImageFormat.Jpeg);
                n++;

            }

问题是每次我运行程序我得到一个未处理的异常“GDI +中发生了一般错误”,我知道这与save方法有关。我以前曾经问过这个问题,如果是这样,那我很抱歉。我在网上搜索了几个小时后尝试了很多不同的修复程序我认为这可能是我的程序特有的。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题可能是由Bitmap对象或Graphics对象锁定的东西。在某些内容上调用Dispose()可能有效,或者您只需复制到新的位图并保存:

       Bitmap copy = new Bitmap(I);
       copy.Save(f, System.Drawing.Imaging.ImageFormat.Jpeg);

为避免GDI文件锁定,您可以从MemoryStream创建图像:

       MemoryStream stream = new MemoryStream(File.ReadAllBytes(fileName));
       Image image = Image.FromStream(stream);