我想标题已经说明了我想知道的问题。有没有可能用Qt打开和保存16位的图片?我指的不是3*8=24bit或4*8=32bit,什么是相当的纯8位图像,我指的是R、G、B的纯16位。
与Patrice所说的相反,在Qt中没有16位的组件格式。QImage
. 你最多可以得到的是 QImage::Format_ARGB32
每个分量为8位。即使你使用8位索引模式,颜色表也不支持每个组件超过8位。此外, QImageIOHandler
阶级性 QImage
所以你不能创建一个自定义的图像格式插件来处理每个颜色组件的16位,很遗憾。
你可以使用libpng (png++)来实现这个目的。
QImage::Format不能定义纯16位,但可以定义10位。QImage::Format_A2RGB30_Premultiplied
(http:/doc.qt.ioqt-5qimage.html。),可以使用RGB每通道10位(0...1)。但如果使用 QImage::setPixel
他们仍然使用8位/通道来定义像素,来自于 QColor
.
正如其他人已经提到的,目前Qt中还没有支持每个组件16位的格式。
然而,有一个请求被打开来实现这一点,并附上了一个补丁。https:/bugreports.qt.iobrowseQTBUG-45858。
不知道这个情况如何,是否会被集成。
Qt5.13 是支持的
下面是例子
QImage raw((uchar*)byte.data(), 480, 640, QImage::Format_Grayscale16);
raw.save(QString("%1/depth.raw").arg(fileName));
打旗语 QImage::格式化_灰度16