web-dev-qa-db-ja.com

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

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

68
Mr.Tu

QImage および QPixmap のドキュメントを読んで、簡単に回答しました:

QPixmapクラスは、使用可能なoff-screen画像表現です。ペイントデバイスとして。

QImageクラスは、ハードウェアに依存しない画像表現を提供し、ピクセルデータへの直接アクセスを可能にし、ペイントデバイスとして使用できます。

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

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

そして、@ Arnoldから:

これは、通常(常にではない)適用される短い要約です。

  • 画像の操作、修正、ピクセルの変更などを行う場合は、QImageを使用します。
  • 同じ画像を画面に複数回描画する場合は、QPixmapに変換します。
46
karlphillip

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

これは、通常(常にではない)適用される短い要約です。

  • 画像の操作、修正、ピクセルの変更などを行う場合は、QImageを使用します。
  • 同じ画像を画面に複数回描画する場合は、QPixmapに変換します。
40
Arnold Spence

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

32
Dave Mateer

産業環境で重要:

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

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

Pixmapでは、再描画はネットワーク上で再描画の命令(数バイト)のみを送信することになります。

QImageでは、画像全体(約数MB)を送信します。

17
iksess
  • QPixmapは、コード内でpixel表現が重要ではない「画像オブジェクト」です。したがって、QPixmapは画像のレンダリング用に設計および最適化されますディスプレイ画面では、X11の使用時にXSe​​rverに保存されるため、XWindowでのQPixmapの描画は、データが既にサーバー上にあり、すぐに使用できるため、QImageを描画するよりもはるかに高速です。

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

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

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

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

  • QPictureは、QPainterコマンドを記録および再生するペイントデバイスです-あなたの描画-
12
Mohammad Kanan