QImage是否能够打开并渲染纯16位图像?
我想标题已经解释了我想知道的。QImage是否能够打开并渲染纯16位图像?,image,qt,qt4,rgb,qimage,Image,Qt,Qt4,Rgb,Qimage,我想标题已经解释了我想知道的。 有没有一种可能的方法可以用Qt打开和保存16位的图像?我指的不是3*8=24位或4*8=32位,这与纯8位图像完全相同,我指的是R、G和B的纯16位图像。与Patrice所说的相反,QImage中没有每个组件16位的格式。您最多可以获得每个组件8位的QImage::Format_ARGB32。即使使用8位索引模式,颜色表也不支持每个组件超过8位。此外,QImageIOHandler类在QImage方面工作,因此很遗憾,您无法创建一个自定义图像格式插件来处理每个颜色
有没有一种可能的方法可以用Qt打开和保存16位的图像?我指的不是3*8=24位或4*8=32位,这与纯8位图像完全相同,我指的是R、G和B的纯16位图像。与Patrice所说的相反,QImage中没有每个组件16位的格式。您最多可以获得每个组件8位的QImage::Format_ARGB32。即使使用8位索引模式,颜色表也不支持每个组件超过8位。此外,QImageIOHandler类在QImage方面工作,因此很遗憾,您无法创建一个自定义图像格式插件来处理每个颜色组件16位。您可以使用libpng png++实现此目的。QImage::format不定义纯16位,但可以定义10位。 格式为A2RGB30,可使用RGB 10位/通道0…1。
但是,如果使用QImage::setPixel,他们仍然使用每个通道8位来定义QColor中的像素。正如其他人已经提到的,目前Qt中不支持每个组件16位的格式 但是,已打开一个请求来实现此功能,并附加了一个补丁: 不确定这是什么状态,以及它是否会集成。Qt5.13受支持 这是一个例子
QImage raw((uchar*)byte.data(), 480, 640, QImage::Format_Grayscale16);
raw.save(QString("%1/depth.raw").arg(fileName));
使用标志QImage::Format_Grayscale16QImage::Format_RGB16图像使用16位RGB格式5-6-5存储。如果我理解正确,Berschi希望R、G和B各16位,总共48位,如果还需要alpha,则64位。您提到的格式为R分配了5位,为G分配了6位,这很聪明,因为我们的眼睛对绿色更敏感,5为B分配了5位,总共16位。因此,感谢您的回答,每个16位,这就是我想要的,不幸的是,这不受支持: