У меня есть функция, которая принимает растровое изображение, копирует его часть и сохраняет его в формате 8bpp. Имя файла результирующего изображения является уникальным, и файл не существует, программа имеет разрешение на запись в целевую папку.
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: общая ошибка возникла в исключении GDI на других компьютерах (в основном Win XP).
На всех компьютерах установлена среда выполнения .NET 3.5 SP1.
Если я использую croped.Save(filename, ImageFormat.Tiff);
вместо croped.Save(filename, tiffEncoder, encoderParams);
, то это работает на всех компьютерах, но мне нужно сохранить Tiff в формате 8bpp.
У вас есть идеи, где может быть проблема?
Спасибо, Лукас