2009-02-25 4 views
0

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

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 = gcnew Bitmap(widht, height, Imaging::PixelFormat::Format48bppRgb); 

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

ответ

0

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

См. Примечания к разделу: PixelFormat Enumeration

 Смежные вопросы

  • Нет связанных вопросов^_^