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

ook*_*lah 7 python jpeg pyqt pyqt4

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

花一些时间来解决这个问题,我已经按照与无济于事一些东西......看在我的站点包/ PyQt4的/插件/ 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目录中并且它具有此功能

[路径]

qgif4.dll, qico4.dll,qjpeg4.dll, qmng4.dll, qsvg4.dll, qtga4.dll, qtiff4.dll
Run Code Online (Sandbox Code Playgroud)

我试过添加

[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')]
Run Code Online (Sandbox Code Playgroud)

没有运气

我在Windows 7 64b家庭高级版上运行python 2.7.2,使用PyQt4 4.9.1(均为32b).

我也尝试过4.8.1和4.8.5版本(我手边有)但是它们都没有支持jpg.我不知所措.如何让这些得到支持?

ook*_*lah 8

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

1.我以管理员的身份运行了PyQt4安装程序,这似乎解决了部分问题.所以它需要以管理员身份运行才能使一切正常运行.

第2位.为了正确加载所有插件,必须先加载QApplication,然后才能加载任何类型的图像.

所以

app = QtGui.QApplication(sys.argv)
Run Code Online (Sandbox Code Playgroud)

需要先创建.

我的脚本运行为

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

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

自从我以管理员身份安装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()
Run Code Online (Sandbox Code Playgroud)

不会显示一切,仍然需要运行

from PyQt4 import QtGui
import sys
app = QtGui.QApplication(sys.argv)
QtGui.QImageReader.supportedImageFormats()
Run Code Online (Sandbox Code Playgroud)

追踪是令人讨厌的,所以希望这会对其他人有所帮助.