7

我正在尝试让 QImage(或 PyQt4 中的任何内容)在脚本中加载 jpg 文件。我还没有找到任何关于如何让它将 jpg 图像作为脚本加载的信息,很多使用 py2exe 编译但我什至无法做到这一点。

花一些时间来解决这个问题,我遵循了一些没有可用的东西。查看我的 site-packages/PyQt4/plugins/imageformats 文件夹,我有:

qgif4.dll, qico4.dll,qjpeg4.dll, qmng4.dll, qsvg4.dll, qtga4.dll, qtiff4.dll

根据 QtGui.QImageReader.supportedImageFormats(),这是我安装的 pyqt4 可以使用的

[PyQt4.QtCore.QByteArray('bmp'), PyQt4.QtCore.QByteArray('pbm'), PyQt4.QtCore.QByteArray('pgm'), PyQt4.QtCore.QByteArray('png'), PyQt4.QtCore.QByteArray('ppm'), PyQt4.QtCore.QByteArray('xbm'), PyQt4.QtCore.QByteArray('xpm')]

我还确保我的 qt.conf 文件位于 python 主目录中,并且它有这个

[路径]

Prefix = C:/Python27/Lib/site-packages/PyQt4
Binaries = C:/Python27/Lib/site-packages/PyQt4

我试过添加

Plugins = C:/Python27/Lib/site-packages/PyQt4/plugins/imageformats
Plugins = C:/Python27/Lib/site-packages/PyQt4/plugins

没有运气

我在 Windows 7 64b Home Premium 上运行 python 2.7.2,带有 PyQt4 4.9.1(均为 32b)。

我也尝试过 4.8.1 和 4.8.5 版本(我手头有),但它们都不支持 jpg。我不知所措。如何让这些恢复得到支持?

4

2 回答 2

8

似乎有两个不同的问题可能导致这种情况。看起来我两个都遇到了。

第一个。我以“管理员身份”运行 PyQt4 安装程序,这似乎解决了部分问题。所以它需要以管理员身份运行才能让一切正常工作。

第二。为了正确加载所有插件,必须在加载任何类型的图像之前先创建 QApplication。

所以

app = QtGui.QApplication(sys.argv)

需要先创建。

我的脚本运行为

def main():
    app = QtGui.QApplication(sys.argv)
    win = window()
    win.display()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

自从我以管理员身份安装 PyQt4 以来,它没有改变,但现在可以工作并加载 jpeg 和其他所有内容。

我想做的是创建一个脚本,该脚本将由 PyQt4 应用程序调用,但它不会自行运行,因此无需先创建 QApplcation。这是我遇到问题#2的地方

供参考:http ://article.gmane.org/gmane.comp.python.pyqt-pykde/7176/match=jpeg+plugin+not+loading

以管理员身份安装并始终创建 QApplication,即使您不需要它。

另外,如果您只是检查空闲状态下可用的内容:

from PyQt4 import QtGui
QtGui.QImageReader.supportedImageFormats()

不会显示所有内容,仍需要运行

from PyQt4 import QtGui
import sys
app = QtGui.QApplication(sys.argv)
QtGui.QImageReader.supportedImageFormats()

这很烦人,所以希望这对其他人有帮助。

于 2012-05-19T23:24:44.770 回答
0

以防万一有人正在搜索加载插件,我在这里为更合适的问题创建了一个答案,以允许您基本上将插件放在任何网络共享文件夹中。

In short, use QtCore.QCoreApplication.addLibraryPath() instead of qt.conf file.

于 2014-05-07T18:38:27.567 回答