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

时间:2012-03-23 03:03:50

标签: qt rendering qimage


我正在寻找最快的方式:

  1. 合并(这意味着从一对图像中制作一个图像,根据其alpha值将一个图像放在另一个图像上)
  2. 显示图片
  3. 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 (.)

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

    我想补充一点,我看到了这个问题: What is the most efficient way to display decoded video frames in Qt?

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

2 个答案:

答案 0 :(得分:5)

我找到了解决方案,使我的代码更加优化。就我而言,我处理多个图像的alpha混合。 I found in documentation, 的是:

  

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

使用:

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

而不是:

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

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

答案 1 :(得分:0)

您可以考虑Qt示例中提供的“Image Composition Example”代码。这似乎是你在寻找什么?