如何从RGB初始化48bpp位图?

时间:2009-02-25 20:43:04

标签: .net visual-c++ bitmap bpp

我正在托管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()'指定任何颜色值,R,G和B的值大于255.有什么办法可以获得围绕这个限制?

1 个答案:

答案 0 :(得分:0)

System.Drawing可以处理48和64位图像文件格式,但它将像素值转换为24位。我知道无法保持全彩色保真度。

请参阅:PixelFormat Enumeration

的备注部分
相关问题