🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

7953閲覧

[Qt]Qtで画像表示

BeatStar

総合スコア4962

Qt

QtはGUIプログラムの開発で広く使われているクロスプラットフォーム開発のフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/03/18 02:47

編集2018/03/20 05:42

趣味でC++やっています。

Qtではjpgファイルとgifファイルは表示不可能なのでしょうか?

最初、

C++

1QPainter painter; 2QPixmap image; 3image.load( /* ファイルパスを指定 */, 0 ); 4if( !image.isNull() ) cout << "loaded" << endl; 5painter.begin(window); 6painter.drawPixmap( 10, 10, image, 0, 0, image.width(), image.height() ); 7painter.end(); 8cout << "ok" << endl;

をRepaintを促されたときのメンバ関数に追加しました。

ファイルパスを jpgファイルとしてコンパイルすると本来なら

image.isNull() が trueを返すはずですが、falseを返しています。

ファイルパス自体は正しいものとします。

( Windows 付属の Explorerでパスを渡すと普通に表示できたので。 )

で、拡張子が悪いのかと思い、

画像を"gif", "png", "bmp" も同じ画像から生成してloadメンバ関数に渡すファイルパスを書き換えてみると

jpg -> false png -> true bmp -> true gif -> false

となっていました。

なぜか jpgファイルとgifファイルが表示できません。

gifファイルといっても普通のjpgファイルから生成したのでファイルがアレの可能性もありますが、jpgファイルも表示不可となると...

[情報]
言語: C++
Qt: Qt 5.6
OS: Windows XP,7,10

宜しくお願い致します。


[ 追記1 ]

画像描画以前の問題でした。
jpgを読み込もうとすると QImage でも QPixmap でもまったく動きません。( 常にempty )
サイトによっては QImage で読み込んで QPixmap に変更すればいいとあったりしますが、
QImageすら読み込んでくれない...
まったくイメージができない...

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

QT QPixmap load jpg でぐぐりました。

以下にいきつきました。

https://stackoverflow.com/questions/12800346/showing-jpg-image-with-qt-does-not-work-with-release-executable

コーデックのdllをインストールしないといけないようです。

投稿2018/03/20 06:00

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BeatStar

2018/03/20 06:22

あー、DLLをサブディレクトリに置けばいいのか... わかりにくい...普通なら全部できる or bmp のみで後は dllが必要...っていうのならわかりそうですが... ご回答ありがとうございます。 外出先で手元にないので帰宅後試してみます!
BeatStar

2018/03/22 03:16

出来ました! 検索していただいたURLに 「"imageformats"というサブディレクトリを作れ」とあるので、 "Qt\Qt5.6.2\5.6\mingw49_32\plugins" にある "imageformats" ディレクトリを丸ごとコピーしました。 するとうまく表示されました。 わかりにくい... ( よく考えたら ソースコードではQImage::loadで失敗しているから "Qt QImage load jpg" で検索すればよかったかも... )
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問