【发布时间】:2012-05-02 19:13:42
【问题描述】:
我有一个函数,它需要一个位图,复制它的一部分并将其保存为 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 in other computer(主要是 Win XP)。
所有计算机都安装了 .NET 3.5 SP1 运行时。
如果我使用croped.Save(filename, ImageFormat.Tiff); 而不是croped.Save(filename, tiffEncoder, encoderParams);,则它适用于所有计算机,但我需要以 8bpp 格式保存 Tiff。
你有什么想法,问题可能出在哪里?
谢谢,卢卡斯
【问题讨论】:
-
可能图片还没保存,开始处理?
-
有没有可以运行的 Windows XP 机器?
-
GDI+ 在 Vista 中已更新至 1.1 版。我从来没有找到任何描述这些变化的文档。听起来你找到了。
-
(将答案从 OP 移至评论):SLaks:我已经在两台 Wn XP 计算机上测试过,但都没有工作。
-
既然你的代码看起来完全没问题......那么“tiffEncoder”呢......问题可能在那里吗?