【问题标题】:QLabel() won't load a pixmap if it is a JPG image如果是 JPG 图像,QLabel() 将不会加载像素图
【发布时间】:2012-05-24 14:41:57
【问题描述】:

我试图让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)

但这也无济于事。

同样,它可以正常加载 PNGs,但不会加载 JPGs。我之前也注意到它也不会加载ICO,但我认为这是一个不相关的问题 - 但现在看起来不是这样。

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

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

我该如何解决这个问题?

【问题讨论】:

  • 什么Qt版本?要查看可用的图像格式:list = QImageReader.supportedImageFormats () 然后print() 这个列表。
  • 您是否完全确定该图像不是其他格式,只有.jpg 扩展名?
  • @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。
  • 我隐约记得一位 Qt 开发人员的一篇博客文章,其中提到了一个导致此类问题的特定图像格式插件。但我认为它很久以前就已经修复了。你的软件更新了吗?
  • 这是我正在谈论的博客文章:Qt Image Decoders Stepping on Each Others

标签: python qt pyqt pyside


【解决方案1】:

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

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

(所以没有“图像格式”部分)

其次,我是个白痴。我在做addLibraryPath()之前创建了一个 QDialog() 类的实例@

【讨论】:

  • 现在还有一个问题悬而未决。为什么它适用于 PNG 图像? ;-)
  • 那是因为 PNG 支持在 imageformats/ 中没有对应的插件,它是包含还是不包含取决于更通用的 Qt 配置。
  • @Deusdies:pyside 网站上是否有关于此问题的文档?我没找到。
猜你喜欢
  • 2021-12-07
  • 2019-08-25
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 2014-12-19
相关资源
最近更新 更多