我有一个功能,它需要一个位图,复制它的一部分并将其保存为 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)上运行良好,并抛出 System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI exception on other computer(主要是 Win XP)。
所有计算机都安装了 .NET 3.5 SP1 运行时。
如果我使用它croped.Save(filename, ImageFormat.Tiff);
而croped.Save(filename, tiffEncoder, encoderParams);
不是它适用于所有计算机,但我需要以 8bpp 格式保存 Tiff。
你有什么想法,问题可能出在哪里?
谢谢,卢卡斯