0

我正在用托管 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。有没有办法绕过这个限制?

4

1 回答 1

0

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

参见备注部分:PixelFormat Enumeration

于 2009-02-25T20:59:19.550 回答