我有一个函数,它接受一个位图,复制其中的一部分并将其保存为8bpp tiff格式。结果图像的文件名是唯一的且文件不存在,程序有写入目标文件夹的权限。
void CropImage(Bitmap map) {
Bitmap croped = new Bitmap(200, 50);
using (Graphics g = Graphics.FromImage(croped)) {
g.DrawImage(map, new Rectangle(0, 0, 200, 50), ...);
}
var encoderParams = new EncoderParameters(2);
encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.ColorDepth, 8L);
encoderParams.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionNone);
croped.Save(filename, tiffEncoder, encoderParams);
croped.Dispose();
}
奇怪的是这个函数在一些电脑上(Win 7)运行良好,而在其他电脑上(大多数是Win XP)则会抛出System.Runtime.InteropServices.ExternalException:GDI中发生了通用错误异常。
所有电脑都安装了.NET 3.5 SP1运行时。
如果我使用
croped.Save(filename, ImageFormat.Tiff);
而不是croped.Save(filename, tiffEncoder, encoderParams);
,那么它就可以在所有电脑上运行,但我需要以8bpp格式保存Tiff。你有任何想法,问题可能出在哪里吗?
谢谢,Lukas