Qt:最快的合并和显示图像

mkk*_*mkk 4 qt rendering qimage


我正在寻找最快的方式:

  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);
Run Code Online (Sandbox Code Playgroud)

/*一些带图像的操作*/

 QPainter displayPainter (this);
 displayPainter.drawImage (topLeft, image1, area);
 displayPainter.drawImage (topLeft, image2, area);
 displayPainter.drawImage (topLeft, image3, area);
Run Code Online (Sandbox Code Playgroud)

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

如果有更好的,更快的?我发现信息,QPixmap更适合在屏幕上显示它,但是这个: displayPainter.drawPixmap (.) 比这慢: displayPainter.drawImage (.).

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

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

但在我的情况下使用QGLWidget有点复杂.我正在使用必需品,这在QGLWidget中使用paintEvent并不稳定.用paintGL没问题.问候,

mkk*_*mkk 5

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

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

使用:

QImage image (width, height, QImage::Format_ARGB32_Premultiplied);
Run Code Online (Sandbox Code Playgroud)

代替:

QImage image (width, height, QImage::Format_ARGB32);
Run Code Online (Sandbox Code Playgroud)

改进的alpha混合使它快2倍!你还有其他想法如何让它变得更好吗?