先看现象,这里有一张图片test.png,windows照片查看器可以正常打开
但是用QImage加载时
QString filePath = qApp->applicationDirPath()+"/test.png";
QImage image(filePath);
qDebug()<<image.isNull()<<image.width()<<image.height()
输出为:true 0 0
这里用到了QImage的构造函数:QImage::QImage(const QString &fileName, const char *format = nullptr),由于format未指定,QImage会根据后缀来识别图片。
通常,我们用QImage或QPixmap加载一张图片时,可以通过isNull()来判断是否加载成功,当加载失败时,isNull()返回false,同时width()和height()也返回0。这种现象很好复现,只需修改图片的后缀。上面用到的test.png,原来的后缀是jpg,我直接改成了png。
下面来说解决方法,这三种方法都是基于Qt,无需第三方库或系统函数。这三种方法的原理都是不根据图片的后缀,而且根据图