2012-05-07 18 views
5

スクリプトでjpgファイルを読み込むためにQImage(またはPyQt4のもの)を取得しようとしています。私はそれがスクリプトとして、py2exeを使用してコンパイルのための多くのjpgイメージをロードする方法についての情報を見つけることができませんでしたが、私はそれを得ることはできません。PyQt4 jpeg/jpgサポートされていない画像形式

これを解決するためにいくつかの時間を過ごし、私は私が持っている無駄... 私のsite-packagesで探し/ PyQt4 /プラグイン/ imageformatsフォルダといくつか続いてきました:

qgif4.dllを、qico4 qtiff4.dll

QtGui.QImageReader.supportedImageFormats()によると、qtga4.dll、qsvg4.dll、qmng4.dll、qjpeg4.dll、.dllが、これは使用することができますpyqt4のインストール私のものです

[ PyQt4.QtCore.QByteArray( 'png')、PyQt4.QtCore.QByteArray( 'pbm')、PyQt4.QtCore.QByteArray( 'pgm')、PyQt4.QtCore.QByteArray( 'png')、PyQt4.QtCore.QByteArray( ' 'p 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をサポートしていません。私は迷っている。これらはどのようにサポートされるのですか?

+0

奇妙な。私にとっては、OSXではpy2appでパッケージングすることになっていましたが、スクリプトの状況ではこれは一度も心配でした。常にプラグインを正しく見つけることができました。 – jdi

+0

うわー、単に 'JPEG'だけではありません。PyQtはそれらの' dll'ファイルを読み込めないようです。あなたは 'Plugins = plugins'を試すことができますか?完全なパスであってはなりません。 – Avaris

+0

私はプラグインを試してから、試しに '/ plugins'、 '/ plugins/imageformats'、 'plugins/imageformats'を試しました。何もない。 – ooklah

答えて

6

これを引き起こす原因として考えられる2つの異なる問題があります。そして、私は両方に遭遇したように見えます。

1st。 PyQt4インストーラを「管理者として」実行して問題の一部を解決したようにしました。したがって、すべてを正しく動作させるには管理者として実行する必要があります。

第2位。すべてのプラグインが正しくロードされるためには、QApplicationを最初に作成してから、あらゆる種類のイメージをロードする必要があります。

ので

app = QtGui.QApplication(sys.argv) 

は、最初に作成する必要があります。

私のスクリプトは、私が管理者としてPyQt4をインストールしてから変更されていない

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

if __name__ == '__main__': 
    main() 

として実行するが、今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() 

を実行する必要があるので、これは他人に役立つでしょう。

+1

Windows上でvirtualenvsを実行しました(グローバルサイトパッケージからenvsサイトパッケージへPyQt4をコピーしました) - オリジナルのqt.confを作成する必要がありましたScripts \ python.exeの隣にポストしてください。 – Strayer

+0

QApplicationを作成せずにプラグインをロードする方法を知っている人は、ここにコメントを追加してください。ユーティリティ画像ロードクラスとしてQImageを使用している人にとっては非常に役に立ちます。 – GaryO

+0

QApplication呼び出しを__main__に入れるまで、Mineは機能しません。 main()のQApplicationで表示したように動作しませんでした。非常に奇妙ですが、メイン()の使用を排除することは私のためにそれを修正しました。 – panofish

0

誰かがプラグインの読み込みを検索している場合は、基本的にはどのネットワーク共有フォルダにもプラグインを置くことができるようにcreated an answer for a more proper question hereです。

要するに、qt.confファイルの代わりにQtCore.QCoreApplication.addLibraryPath()を使用してください。

関連する問題