我正在开发需要将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));
答案 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文件,该文件使用更标准的标题。然后,上面的代码将适合您。