Python PyQt4 jpeg/jpg不支持的图像格式

Python PyQt4 jpeg/jpg不支持的图像格式,python,pyqt,pyqt4,jpeg,Python,Pyqt,Pyqt4,Jpeg,我正试图让QImage(或者PyQt4中的任何东西)在脚本中加载jpg文件。我还没有找到任何关于如何让它作为脚本加载jpg图像的信息,很多都是使用py2exe编译的,但我甚至还没找到那么多 我花了一些时间来解决这个问题,但我遵循了一些没有可用的方法。在我的网站包/PyQt4/plugins/imageformats文件夹中查找我有: qgif4.dll, qico4.dll,qjpeg4.dll, qmng4.dll, qsvg4.dll, qtga4.dll, qtiff4.dll 根据Qt

我正试图让QImage(或者PyQt4中的任何东西)在脚本中加载jpg文件。我还没有找到任何关于如何让它作为脚本加载jpg图像的信息,很多都是使用py2exe编译的,但我甚至还没找到那么多

我花了一些时间来解决这个问题,但我遵循了一些没有可用的方法。在我的网站包/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
不走运

我正在Windows764B家庭高级版上运行Python2.7.2和PyQt4.9.1(都是32b)


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

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

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

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

所以

首先需要创建

我的脚本以

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

if __name__ == '__main__':
    main()
自从我以管理员身份安装PyQt4以来,它一直没有改变,但现在可以工作并加载JPEG和其他所有内容

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

供参考:

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

另外,如果您只是检查空闲状态下有什么可用:

from PyQt4 import QtGui
QtGui.QImageReader.supportedImageFormats()
不会显示所有内容,仍然需要运行

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

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

为了防止有人搜索加载插件,我允许你基本上将插件放在任何网络共享文件夹中


简而言之,使用
QtCore.QCoreApplication.addLibraryPath()
代替qt.conf文件。

。对我来说,在OSX上使用py2app进行打包时,这曾经是一个问题,但从来没有在脚本环境中出现过。它总能找到正确的插件。哇,不仅仅是
JPEG
,PyQt似乎无法加载任何
dll
文件。你能试试
Plugins=Plugins
?它不应该是完整路径。我给了插件一次尝试,然后尝试了“/plugins”、““/plugins/imageformats”、“plugins/imageformats”作为度量标准。什么都没有。您是否尝试过简单地将python和PyQt安装完全擦除并重新安装?这可能对大多数人都适用,因此,除非你在代码中做了一些奇怪的事情,否则你的安装可能就是一团糟。我从各自的网站下载了最新的python 2.7.3 msi和PyQt4 4.9.1 exe安装程序,并将它们安装到一台以前从未安装过的新机器上。新机器也无法加载额外的图像格式。我只是在Windows上使用VirtualNVS(将PyQt4从全局站点包复制到envs站点包)时遇到了这个问题。我必须创建类似于原始帖子中Scripts\python.exe旁边指定的qt.conf,然后一切正常运行!如果有人知道如何在不创建QApplication的情况下加载插件,请在此处添加评论;这对我们这些仅仅使用QImage作为实用图像加载类的人来说是非常有帮助的。在我将QApplication调用放入main之前,我的类不会工作。如您所示,它不能与main()中的QApplication一起工作。非常奇怪,但是消除了main()的使用为我解决了这个问题。
from PyQt4 import QtGui
import sys
app = QtGui.QApplication(sys.argv)
QtGui.QImageReader.supportedImageFormats()