繁体   English   中英

QImage 是否能够打开和渲染纯 16 位图像?

[英]Is QImage able to open and render pure 16-bit images?

我想标题已经解释了我想知道的。
有没有办法用 Qt 打开和保存 16 位图像? 而且我不是指 3*8=24bit 或 4*8=32bit,这与纯 8 位图像完全相同,我指的是 R、G 和 B 的纯 16 位。

与 Patrice 所说的相反, QImage每个组件格式没有 16 位。 您可以获得的最多是QImage::Format_ARGB32 ,每个组件 8 位。 即使您使用 8 位索引模式,颜色表也不支持每个组件超过 8 位。 此外, QImageIOHandler类在QImage方面工作,因此QImageIOHandler是,您无法创建自定义图像格式插件来处理每个颜色分量 16 位。

QImage::Format 不能定义纯 16 位,但可以定义 10 位。
QImage::Format_A2RGB30_Premultiplied ( http://doc.qt.io/qt-5/qimage.html ),每个通道可以使用 RGB 10 位 (0...1)。
但是如果使用QImage::setPixel他们仍然使用每个通道 8 位来定义来自QColor像素。

正如其他人已经提到的,Qt 目前不支持每个组件 16 位的格式。

但是,已打开一个请求来实现此功能,并附有补丁: https : //bugreports.qt.io/browse/QTBUG-45858

不确定它的状态如何,以及它是否会被集成。

支持Qt5.13

这是例子

QImage raw((uchar*)byte.data(), 480, 640, QImage::Format_Grayscale16);
raw.save(QString("%1/depth.raw").arg(fileName));

使用标志QImage::Format_Grayscale16

为此,您可以使用 libpng (png++)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM