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