Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QImage是否能够打开并渲染纯16位图像?_Image_Qt_Qt4_Rgb_Qimage - Fatal编程技术网

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_Grayscale16

QImage::Format_RGB16图像使用16位RGB格式5-6-5存储。如果我理解正确,Berschi希望R、G和B各16位,总共48位,如果还需要alpha,则64位。您提到的格式为R分配了5位,为G分配了6位,这很聪明,因为我们的眼睛对绿色更敏感,5为B分配了5位,总共16位。因此,感谢您的回答,每个16位,这就是我想要的,不幸的是,这不受支持: