QImageとQPixmapの違いは何ですか?


84

QImageとQPixmapの違いがわかりません。同じ機能を提供しているようです。QImageはいつ使用する必要があり、QPixmapはいつ使用する必要がありますか?


あなたの質問を理解できるかどうかはわかりませんが、ドキュメントではかなり明確だと思いました。「QImageはI / O、およびピクセルへの直接アクセスと操作用に設計および最適化されていますが、QPixmapは画像を表示するために設計および最適化されています。画面上で。" doc.qt.nokia.com/latest/qpixmap.html#details
cgmb

1
ええ!私はそれを見つけましたが、よく理解していません。たとえば、I / O用に最適化され、表示用に最適化されています。これは、異なるプラットフォームで画像が表示された違いですか?あなたは私に説明するための一歩を踏み出す手助け..Can ..あなたに感謝...
Mr.Tu

意味が100%わからないのですが、QWidgetsを使用している場合は、QLabelに表示できます。QGraphicsViewを使用している場合は、QGraphicsPixmapItemに表示できます。QMLを使用している場合は、Image要素がすべてを処理します。
cgmb 2012

別の言い方をすれば、エンジンとは何ですか、その仕事は何ですか?いつ使うの?
Mr.Tu 2012

回答:


55

Easilly上のドキュメントを読むことで答えQImageのQPixmapの

QPixmapののクラスがあるオフスクリーン塗装装置として使用することができる画像表現。

QImageののクラスは、画素データに直接アクセスすることができ、塗料装置として使用することができるハードウェアに依存しない画像表現を提供します。

編集:また、@ Daveの答えから:

GUIスレッドの外部でQPixmapを操作することはできませんが、QImageにはそのような制限はありません。

そして@Arnoldから:

通常(常にではない)適用される短い要約を次に示します。

  • 画像の操作、変更、ピクセルの変更などを計画している場合は、QImageを使用してください。
  • 同じ画像を画面に複数回描画する場合は、QPixmapに変換してください。

あなたの助けに感謝します...一般的なプロセスはQPixmpaとQImageの画像をロードすることを何..ですメモリにあるもの.. ..ありがとう
Mr.Tu

何をしようとしているのかわかりませんが、この質問では、ディスクからYV12データをロードし、GLSLフラグメントシェーダーを使用してRGBに変換し、QImage内の画面に表示する方法を示します。あなたが達成しようとしていることについてもっと明確であれば、私はあなたを正しい方向に向けることができると思います。
karlphillip 2012

14
これは本当に何かに答えますか?
spinkus 2014年

7
ドキュメントや他の人の答えをコピーするだけでは意味がありません。
Viacheslav Kroilov 2018年

48

Qt Labsには、Qtグラフィックシステムについて多くのことを説明する一連の素晴らしい記事があります。特にこの記事には、QImage対に関するセクションがあります。QPixmap。ます。

通常(常にではない)適用される短い要約を次に示します。

  • 画像の操作、変更、ピクセルの変更などを計画している場合は、 QImageます。
  • 同じ画像を画面に複数回描画する場合は、に変換してくださいQPixmap

ありがとうございました。この一節は私たちに教えてくれます:画像をロードする2つの異なる方法、ラスターとOpenGLがありますか?は正しい?
Mr.Tu 2012

私はその質問をよく理解していません。「ラスター」も「OpenGL」も、画像をロードする方法を具体的に表すものではありません。
アーノルドスペンス

37

重要な違いの1つはQPixmap、メインGUIスレッド以外ではを作成または操作できないことです。ただし、QImageバックグラウンドスレッドでインスタンスを作成および操作し、GUIスレッドに戻した後でそれらを変換することはできます。


22

産業環境で重要:

QPixmapは、表示を行うビデオカードに保存されます。QImageではありません。

したがって、アプリケーションを実行しているサーバーと表示を実行しているクライアントステーションがある場合、ネットワークの使用量の点で非常に重要です。

Pixmapの場合、再描画は、ネットワークを介して再描画する注文(数バイト)のみを送信することで構成されます。

QImageでは、画像全体(約数MB)を送信することで構成されます。


19
  • QPixmap は「画像オブジェクト」であり、そのpixel表現はコードに影響を与えません。したがって、QPixmapは表示画面に画像をレンダリングするように設計および最適化されており、X11を使用するとXServerに保存されるため、XWindowでのQPixmapの描画は描画よりはるかに高速です。 QImages、データはすでにサーバー上にあり、使用する準備ができているため。

    QPixmapを使用する場合:既存の画像(アイコン..背景など)を特に繰り返し描画する場合は、QPixmapを使用します。

  • QImageは、クライアントコードの「メモリ内のピクセルの配列」です。QImageは、I / O、および直接のピクセルアクセスと操作用に設計および最適化されています。

    QImageを使用する場合:Qpaintを使用して描画したり、画像のピクセルを操作したりする場合。

  • QBitmapは、深さ1を保証する便利なQPixmapサブクラスであり、モノクロ(1ビットの深さ)のピックスマップです。QPixmapと同様に、QBitmapは暗黙的なデータ共有の使用に最適化されています。

  • QPictureは、QPainterコマンド(描画)を記録および再生するペイントデバイスです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.