2

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

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+ 中发生一般错误”,并且我知道这与保存方法有关。我假设以前有人问过这个问题,如果是这样的话,我很抱歉。在网上搜索了几个小时后,我尝试了许多不同的修复方法,我认为这可能是我的程序特有的。有任何想法吗?

4

1 回答 1

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);
于 2011-04-10T00:33:20.660 回答