我正在托管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.有什么办法可以获得围绕这个限制?
答案 0 :(得分:0)
System.Drawing可以处理48和64位图像文件格式,但它将像素值转换为24位。我知道无法保持全彩色保真度。
的备注部分