QLabel()无法加载JPG格式的图片作为pixmap。

6

我正在尝试让一个QLabel()从文件中显示一个pixmap JPG图像(该文件不能在资源文件中,因为它是从网络上下载的),但我在加载时遇到了问题。 代码非常简单:

label = QLabel()
label.setPixmap(QPixmap("image.jpg"))

它可以处理PNG文件,但无法处理JPG文件。我已经搜索了很多,发现需要将“imageformats”文件夹放置在脚本所在的同一文件夹中。然而,即使这样做(是的,“qjpeg4.dll”和其他文件都在那里),它仍然无法正常工作。我也尝试过进行调整。
path = r"C:\Users\Deusdies\Documents\Work\myapp\imageformats"
app.addLibraryPath(path)

但这也没有帮助。

同样,它可以很好地加载PNG,但无法加载JPG。 我之前甚至注意到它也无法加载ICO文件,但我认为这是一个不相关的问题 - 但现在看来并非如此。

值得注意的是,在此时应用程序尚未转换为.exe - 它是通过 PowerShell 中的 python.exe解释器运行的。

我的开发环境是Windows 7 x64,PySide 1.1.0

我该如何解决这个问题?


用什么Qt版本?要查看可用的图像格式:list = QImageReader.supportedImageFormats()然后print()此列表。 - dschulz
你确定这张图片就是 .jpg 格式,而不是其他格式的图片文件名中只有 .jpg 后缀吗? - dschulz
@dschulz:我得到了这个:[PySide.QtCore.QByteArray('bmp'), PySide.QtCore.QByteArray('pbm'), PySide.QtCore.QByteArray('pgm'), PySide.QtCore.QByteArray('png'), PySide.QtCore.QByteArray('ppm'), PySide.QtCore.QByteArray('xbm'), PySide.QtCore.QByteArray('xpm')] 显然缺少JPG格式。有什么办法可以添加它吗?而且,是的,我100%确定它是JPG格式。 - Bo Milanovich
我模糊地记得一个Qt开发者在博客文章中提到了一个特定的图像格式插件会导致这种问题。但是我想很久以前就已经修复了。你的软件有更新吗? - dschulz
这是我所说的博客文章:Qt图像解码器相互干扰 - dschulz
是的,它已经更新了,使用了最新稳定的Qt。但博客文章谈到了无法加载PNG文件的问题。 - Bo Milanovich
1个回答

5

我解决了这个问题。首先,路径应该像这样:

path = r"C:\Users\Deusdies\Documents\Work\myapp"

第一,去掉"imageformats"部分。

第二,我太蠢了。在执行addLibraryPath()之前,我创建了一个QDialog()类的实例。


现在还有另一个问题待解决...为什么它可以使用PNG图像呢?;-) - dschulz
2
这是因为在imageformats/中没有对应的PNG支持插件,它的包含与否取决于更一般的Qt配置。 - Daniel Vérité
@Deusdies:在 PySide 网站上有关于这个问题的文档吗?我找不到。 - eric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接