ビットマップを取得し、その一部をコピーして8bpptiffとして保存する関数があります。結果イメージのファイル名は一意であり、ファイルは存在しません。プログラムには、ターゲットフォルダーへの書き込み権限があります。
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をスローします。他のコンピューター(主にWin XP)のGDI例外で一般的なエラーが発生しました。
すべてのコンピューターには、.NET3.5SP1ランタイムがインストールされています。
croped.Save(filename, ImageFormat.Tiff);
代わりに使用するcroped.Save(filename, tiffEncoder, encoderParams);
と、すべてのコンピューターで機能しますが、Tiffを8bpp形式で保存する必要があります。
問題が発生する可能性のあるアイデアはありますか?
ありがとう、ルーカス