4


我正在寻找最快的方法:

  1. 合并(这意味着从几张图像中制作一张图像,根据它们的 alpha 值将一张放在另一张上)
  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 更适合在屏幕上显示它,但是 this: displayPainter.drawPixmap (.) 比 this: 慢 displayPainter.drawImage (.)

- - - - - - - - - - - - - - - - - - - - - 编辑 - - - - ----------------------------------

我想补充一点,我看到了这个问题: 在 Qt 中显示解码视频帧的最有效方法是什么?

但就我而言,使用 QGLWidget 有点复杂。我正在使用必需品,这与 QGLWidget 中的paintEvent 不稳定。用paintGL没有问题。问候,

4

2 回答 2

5

我找到了使我的代码更优化的解决方案。就我而言,我处理多个图像的 alpha 混合。我在文档中发现:

“某些操作(例如使用 alpha 混合的图像合成)使用预乘 ARGB32 比使用普通 ARGB32 更快。”

使用:

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

代替:

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

改进的 alpha 混合使其速度提高了 2 倍!您还有其他想法如何使它变得更好吗?

于 2012-03-27T14:27:25.753 回答
0

You may consider the "Image Composition Example" code available in Qt examples. It seems to be what you are looking for ?

于 2012-03-23T20:33:05.033 回答