我是在应用程序,需要加载bmp 16位(5-6-5)图像到QPixmap。在Qt中有任何方法可以直接像24位bmp那样做吗?
我试图将所有图像转换为24位版本,加载它们没有问题。不幸的是,我真的需要使用16位。
我也尝试了下面的代码,但没有成功。然而,我可以加载16位(1-5-5-5)版本的我的bmp。
QImage img = QImage(300, 300, QImage::Format_RGB16);
img.loadFromData(imgArray);
ui->test->setPixmap(QPixmap::fromImage(img));发布于 2015-06-09 23:17:41
对于我使用QImage构造函数来说,它似乎运行得很好:
QImage::QImage(const QString & fileName, const char * format = 0)基本上,其用途是:
QImage img = QImage("filename.bmp")RGB16格式应该由构造器自己从文件头中提取。
编辑:
您发布的文件似乎使用了Qt不支持的标头类型。它是一个大小为56的无文档头,名为BITMAPV3INFOHEADER,维基百科解释为:
没有正式文档,但此文档是由Adobe的一名员工发布的论坛,并声明该标准曾一度包含在正式的MS文档https://forums.adobe.com/message/3272950#3272950中。
它似乎是一个非常特殊的标题类型,许多库都不支持它。但是,gimp或ImageMagic可以加载并转换它,因此我建议您将您的文件转换为另一个使用更标准头的RGB565编码的BMP文件。然后,上述代码将适用于您。
https://stackoverflow.com/questions/30744209
复制相似问题