Qt - 加载扩展名错误的图像

Qt - Loading image with wrong extension

我目前正在开发一个 Qt 程序,该程序处理用户提供的图像。我 运行 遇到的一个问题是很多图像保存时使用了错误的扩展名 - 例如图像以 JPG 格式保存,但具有 PNG 扩展名。

Qt 似乎不能很好地处理这个问题。当我将这样的图像加载到 QImage 中时,QImage 加载失败。我一直在查看文档,但我没有遇到任何与此相关的内容。

尽管有 PNG 扩展名,但我使用的其他程序能够正确地将图像识别为 JPG,因此 Qt 应该没有理由无法做到这一点,但我运气不好。

有什么建议吗?

我使用 QImageReader 解决了这个问题。下面显示了一个使用 PySide 的示例。 首先,我创建了一个 QImageReader 实例并将其设置为从内容中读取格式。

image_reader = QtGui.QImageReader()
image_reader.setDecideFromContent(True)

此设置告诉 reader 仅查看图像数据以确定其格式而不是扩展名。

然后我将文件名设置为我要加载的图像的文件名并调用 read()。

image_reader.setFileName(file_path_here)
image = image_reader.read()

读取 returns 一个 QImage 对象,所以我从那里继续我的其余代码。