【问题标题】:Qt: the fastest merging and displaying of imagesQt:最快的图像合并显示
【发布时间】:2012-03-27 23:07:25
【问题描述】:


我正在寻找最快的方式:

  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 更适合在屏幕上显示它,但是这个: displayPainter.drawPixmap (.) 比这个慢: displayPainter.drawImage (.).

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

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

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

【问题讨论】:

    标签: qt rendering qimage


    【解决方案1】:

    我找到了使我的代码更优化的解决方案。就我而言,我处理多个图像的 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 倍! 您还有其他如何改进的想法吗?

    【讨论】:

      【解决方案2】:

      您可以考虑 Qt 示例中提供的“Image Composition Example”代码。这似乎是您要找的东西?

      【讨论】:

      • 不完全是。我的代码给了我期望的结果。问题是我需要这个结果比我现在得到的更快。对于 4 个项目: QImage(640, 480, QImage::Format_ARGB32) 大约 80 毫秒(很多)。我想,有一些更好的方法可以做到这一点。你有什么想法可以让它更快吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      相关资源
      最近更新 更多