Я получаю значение "Значение не может быть null.\r\nParameter name: encoder" при сохранении растрового изображения с использованием RawFormat. Пример кода:
class Program
{
static void Main(string[] args)
{
try
{
var image = new System.Drawing.Bitmap(500, 400);
var stream = new MemoryStream();
image.Save(stream, image.RawFormat);
}
catch (Exception exp)
{
Console.WriteLine(exp.ToString());
}
}
}
RawFormat не существует в существующем списке ImageEncoders, так как ниже код возвращает null.
var imageCodecInfo = ImageCodecInfo.GetImageEncoders().FirstOrDefault(codec => codec.FormatID == image.RawFormat.Guid);
Примечание. Изображение может быть любого типа (JPEG, BMP, PNG) и т.д. Image.Save() должен работать на image.RawFormat. RawFormat не является типом Bitmap. Если я изменил изображение .RawFormat на ImageFormat.Bmp, операция сохранения завершится успешно.
Ссылки ниже, но ничего не найдено для того, чтобы сделать его независимым от типа изображения.
Image.Save crashing: { "Значение не может быть null.\r\nParameter name: encoder" } Почему Image.Save(Stream, ImageFormat) бросает исключение?
Любые предложения приветствуются.