c#从数组保存图像

本文关键字:图像 保存 数组 | 更新日期: 2023-09-27 17:49:30

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

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+",我知道一个事实,这是与保存方法有关。我假设这个问题以前已经被问过了,如果是这样的话,那么我很抱歉。在网上搜索了几个小时后,我尝试了许多不同的修复方法,我认为这可能是特定于我的程序的。什么好主意吗?

c#从数组保存图像

问题可能是被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);