Qt - 将bmp565加载到QPixmap

时间:2015-06-09 22:54:11

标签: qt bmp qpixmap

我正在开发需要将bmp 16bit(5-6-5)图像加载到QPixmap的应用程序。在Qt中有没有办法像24bit bmp一样直接这样做?

我尝试将所有图片转换为24位版本,加载它们没有问题。不幸的是,我真的需要使用16位。

我还尝试了以下代码,但没有成功。但是我可以加载16b(1-5-5-5)版本的bmp。

QImage img = QImage(300, 300, QImage::Format_RGB16);
img.loadFromData(imgArray);
ui->test->setPixmap(QPixmap::fromImage(img));

1 个答案:

答案 0 :(得分:0)

对我来说,使用QImage构造函数似乎很有效:

QImage::QImage(const QString & fileName, const char * format = 0)

基本上,使用方法是:

QImage img = QImage("filename.bmp")

并且构造函数应该从文件头中单独拾取RGB16格式。

编辑:

您发布的文件似乎使用了Qt不支持的标头类型。它是一个名为BITMAPV3INFOHEADER的大小为56的未记录的标题,Wikipedia解释为:

  

未正式记录,但此文档已发布于Adobe   论坛,Adobe的一名员工,声明标准是   过去的某一点包含在官方MS文档中   https://forums.adobe.com/message/3272950#3272950

它似乎是一种非常特殊的头类型,许多库都不支持它。但是,gimp或ImageMagic可以加载并转换它,所以我建议您将文件转换为另一个使用RGB565编码的BMP文件,该文件使用更标准的标题。然后,上面的代码将适合您。