4

私は画像ファイルを持っていますC:/44637landscapes-2007.jpg

QPixmapPySideを使用してこのファイルをロードしたい

私は次のように試しました。

pixmap = QPixmap('C:/44637landscapes-2007.jpg')

しかし、ドキュメントには次のように書かれてQPixmap(':/xxxxxx.jpeg')います。とはどういう':'意味ですか?

に画像をロードするにはどうすればよい'C:\'ですか?

編集: 問題は、ロードしようとしたことでした"JPEG"。問題なくロードできました"PNG"。では、ロードするには他に何をする必要があります"JPEG"か?

ありがとうジジョイ

4

3 に答える 3

5

Qt は、画像に対して少し奇妙なことを行います。png のみを使用している場合は、問題はありません。他の画像形式の処理は少し異なります。

Qt ディレクトリ (すべてのバイナリとソースがある場所) を見ると、次のディレクトリが見つかります。 plugins\imageformats

そのディレクトリには、Qt がサポートする画像形式ごとに大量のdlls(または) があります。.soあなたの場合、あなたが興味を持っているのはqjpeg4.dll

ここで、アプリケーションを実行して を使用しようとするとjpeg、Qt はこのプラグインをロードしようとしますが、見つからない場合は画像が表示されません。

ico ファイルにも同様の問題がありました。Qtフォルダーが私たちの中にあったため、開発環境で機能し、PATH,魔法のようにこのプラグインを見つけました。しかし、ソフトウェアをリリースする際には、必要な dll のみを配布していたため、機能しませんでした。

多くの調査の後、これが私たちがしたことです:

  • アプリケーションは bin/ ディレクトリにあります。これは、exe とすべての Qt dll が配置される場所です。 QtCore4.dllなどQtGui4.dll...

  • bin ディレクトリの下に、というサブディレクトリを作成します。'imageformats'

  • Putqjpeg4.dllおよび必要なその他の画像プラグイン。

  • コードを次のように変更します。

    QApplication _App(argc, argv);

    // Find the path of your bin directory - whereever your exe resides.

    QString _Path = _PathToBin + QString(QDir::separator()) + "imageformats");

    // This line is providing a path to Qt telling it to look here for plugins QApplication::addLibraryPath(_Path);

    // Initialize the main form

    return _App.exec();

    これにより、Qt がjpeg処理プラグインを認識し、UI.

于 2011-05-11T21:19:32.853 に答える
4

ファイルのパス名を指定することで、QPixMap のインスタンスを作成できます。コードを試したときに表示されるエラーは何ですか? コードを次のように変更します。

pixmap = QPixMap(r'C:\filename.jpeg')

あなたが参照しているドキュメントは、Qt リソースをロードする方法です。アプリケーションが必要とするイメージを Qt リソースに変換して、プラットフォームに依存しない方法でロードすることができます。その手順については、Qt リソース システムの ドキュメントを参照してください。

于 2011-05-10T16:59:49.940 に答える
3

Python コードを実行可能ファイルにビルドしようとしている場合、これで .ico ファイルの問題がカバーされますが、プロセスは JPEG でも同じです: PyQt/PySide - アイコン表示

インストールされたインタープリターからの実行時に問題が発生している場合は、パス変数が正しく設定されていない可能性があります。qt.conf (ベースの python dir 内) が削除/変更されているか、qjpeg4.dll が存在しません。 ( ) であるはず<python dir>\Lib\site-packages\PySide\plugins\imageformatsです。

私のqt.confは次のようになります:

[Paths]
Prefix = C:/Python27/lib/site-packages/PySide
Binaries = .
Plugins = plugins
Translation = translation

C:/Python27/lib/site-packages/PySide私のシステム PATH 変数の一部であり、PyQt (または他の Qt) ディレクトリの前にあります。

于 2011-05-12T02:24:55.380 に答える