инициализация растрового изображения 48 бит на диск из файла в c # - PullRequest
0 голосов
/ 06 июля 2011

Я записываю 48bppRgb в файл, но когда я создаю растровое изображение из этого файла, это 32bppArgb (объект img2 имеет свойство PixelFormat.32bppArgb).

Минимизированный пример:

Bitmap img1 = new Bitmap(100, 100, PixelFormat.Format48bppRgb);
img1.Save("/img1.bmp");
Bitmap img2 = new Bitmap("/img1.bmp");

Почему?

1 Ответ

3 голосов
/ 06 июля 2011

Более одной проблемы. Вы не сохранили изображение в формате BMP. Формат по умолчанию для Image.Save (строка) - PNG. Кодер PNG, встроенный в GDI +, не поддерживает изображения с разрешением 48 бит / дюйм. Для сохранения в формате BMP необходимо указать формат изображения:

        Bitmap img1 = new Bitmap(100, 100, PixelFormat.Format48bppRgb);
        img1.Save("c:/temp/img1.bmp", ImageFormat.Bmp);

Однако вы обнаружите, что кодировщик BMP также не поддерживает изображения с разрешением 48 бит / с, вы получите изображение с разрешением 24 бит / с при загрузке. Ни один из кодеков не поддерживает 48bpp.

В GDI + много недостающей функциональности. Например, ImageFormat.Icon не работает, фактически сохраняет PNG. А поддержка любого из форматов индексированных пикселей довольно скудна. Если вам нужна такая поддержка, вам понадобится профессиональная библиотека изображений. LeadTools или ImageMagick являются обычным выбором.

...