如果图片的路径没错,那就是图片的后缀名被手动修改了(例如jpg格式被修改成了png),不同格式的图片存储方式有所差别,使用QPixmap的load方法加载时,默认是根据图片的后缀名区分格式,因此正确的加载方法是使用QPixmap的loadFromData方法,如下所示:
QFile fi(filePath);
if (fi.open(QIODevice::ReadOnly)) {
QPixmap pix;
pix.loadFromData(fi.readAll());
fi.close();
}
根据该方法,可以判断某个文件是否为图片,代码如下:
// 根据文件路径,判断文件是否为图片
bool isImage(const QString &filePath)
{
bool bRet = false;
QFile fi(filePath);
if (fi.open(QIODevice::ReadOnly)) {
QPixmap pix;
pix.loadFromData(fi.readAll());
bRet = !pix.isNull();
fi.close();
}
return bRet;
}
本文介绍了一种解决因图片格式后缀被更改导致加载失败的方法,通过使用QPixmap的loadFromData方法来正确加载图片,并提供了一个判断文件是否为图片的有效方案。
1万+

被折叠的 条评论
为什么被折叠?



