Как инициализировать 48-битные растровые изображения из RGB? - PullRequest
0 голосов
/ 25 февраля 2009

Я пишу интерпретатор в управляемом C ++ для, среди прочего, формата изображения PPM. Спецификация изображения позволяет использовать изображения размером до двух байтов на пиксель на канал или 48-битные на пиксель цветные изображения. Я пытаюсь прочитать этот формат и преобразовать его в растровое изображение .Net, но у меня возникают проблемы с его работой. Когда у меня есть 24-битные изображения на пиксель, я инициализирую их так:

bmp = gcnew Bitmap(width, height);
<for each pixel>
    bmp->SetPixel(x, y, Drawing::Color::FromArgb(Convert::ToInt32(fileData[offset]),
        Convert::ToInt32(fileData[offset + 1]), 
            Convert::ToInt32(fileData[offset + 2])));
    offset += 3;

Для изображений размером 48 бит на пиксель я инициализировал bmp следующим образом:

bmp = gcnew Bitmap(widht, height, Imaging::PixelFormat::Format48bppRgb);

Однако, при попытке заполнить данные пикселей, я не могу указать какие-либо значения цвета, используя «Color :: FromArgb ()» со значениями больше 255 для R, G и B. Есть ли способ получить вокруг этого ограничения?

1 Ответ

0 голосов
/ 25 февраля 2009

System.Drawing может обрабатывать 48- и 64-битные форматы файлов изображений, но он преобразует значения пикселей в 24-битные. Я не знаю ни одного способа сохранить полную цветопередачу.

См. Раздел «Примечания»: Перечисление PixelFormat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...