Имея код, который работает веками при загрузке и хранении изображений, я обнаружил, что у меня есть одно изображение, которое разбивает этот код:
const string i1Path = @"c:\my\i1.jpg";
const string i2Path = @"c:\my\i2.jpg";
var i = Image.FromFile(i1Path);
i.Save(i2Path, ImageFormat.Jpeg);
Исключение составляет:
Возникло событие System.Runtime.InteropServices.ExternalException
Общая ошибка произошла в GDI +.
в System.Drawing.Image.Save(имя файла String, кодер ImageCodecInfo, EncoderParameters encoderParams)
в System.Drawing.Image.Save(имя файла String, формат ImageFormat)
при...
Насколько я вижу, в изображении нет ничего особенного. Он имеет размер около 250 пикселей и может быть открыт, например. Windows Image Viewer или Paint.NET:
(Так как изображение выше, после загрузки в Qaru больше не вызывает ошибку, я разместил исходное изображение здесь)
Я обнаружил, что при вызове метода Save
целевой файл образа создается с нулевыми байтами.
Я действительно не знаю, что вызывает ошибку.
Мои вопросы:
- Можете ли вы придумать какую-либо особую вещь, которая помешала бы .NET сохранить изображение?
- Есть ли способ (помимо панировки) сузить такие ошибки?