4


私は次の最速の方法を探しています:

  1. マージ(2つの画像から1つの画像を作成し、アルファ値に関して1つの画像を重ねることを意味します)
  2. 画像を表示する

Qtで これが私の解決策です:

// ------------------------------------------------ ------------------------------------

 QImage image1 (width, height, QImage::Format_ARGB32);
 QImage image2 (width, height, QImage::Format_ARGB32);
 QImage image3 (width, height, QImage::Format_ARGB32);

/*画像を使用した一部の操作*/

 QPainter displayPainter (this);
 displayPainter.drawImage (topLeft, image1, area);
 displayPainter.drawImage (topLeft, image2, area);
 displayPainter.drawImage (topLeft, image3, area);

// ------------------------------------------------ ------------------------------------

より良い、より速いものが存在する場合は?QPixmapは画面に表示するのに適しているという情報を見つけましたが、これ は次のdisplayPainter.drawPixmap (.) ように遅くなります displayPainter.drawImage (.)

- - - - - - - - - - - - - - - - - - - - - 編集 - - - - -----------------------------------

私がこの質問を見たことを付け加えたいと思います: Qtでデコードされたビデオフレームを表示する最も効率的な方法は何ですか?

しかし、私の場合、QGLWidgetの使用は少し複雑です。私はnecessitasを使用していますが、これはQGLWidgetのpaintEventでは安定していません。paintGLでは問題ありません。よろしく、

4

2 に答える 2

5

コードをより最適にするための解決策を見つけました。私の場合、複数の画像のアルファブレンディングを扱っています。私はドキュメントでそれを見つけました:

「特定の操作(アルファブレンディングを使用した画像合成など)は、プレーンなARGB32よりも事前に乗算されたARGB32を使用した方が高速です。」

使用:

QImage image (width, height, QImage::Format_ARGB32_Premultiplied);

それ以外の:

QImage image (width, height, QImage::Format_ARGB32);

アルファブレンディングが改善され、2倍速くなりました!それをより良くする方法について他に何かアイデアはありますか?

于 2012-03-27T14:27:25.753 に答える
0

Qtの例で利用可能な「ImageCompositionExample」コード検討してください。それはあなたが探しているもののようですか?

于 2012-03-23T20:33:05.033 に答える