QImage到QPixmap很昂贵

时间:2016-04-25 03:41:45

标签: c++ qt

对于我的应用程序,我想继续显示图像。但我发现将qimage转换为qpixmap需要大约30ms。这影响了我的帧率,所以我想找到更有效的方式用QtGui显示我的图像。我可以使用哪种方法? 有人能帮助我吗?

3 个答案:

答案 0 :(得分:2)

如果您仔细阅读文档,则会解释所有内容。

  • QImage是IO处理和直接像素访问和操作的设计
  • QPixmap专为在屏幕上显示图像而设计和优化

如果您只加载图片并显示它(不对图像进行任何操作),只需加载图像并将其缓存为QPixmap。

但如果你进行操纵,那么你无能为力。也许您可以尝试将图像直接绘制到窗口小部件的QPainter。我不知道它是否比将图像转换为像素图并将其绘制为小部件更快。

答案 1 :(得分:1)

您不必进行转换。确保图片的格式为backing store,并且只是小部件上的drawImage。它的速度可以快。

使用默认的栅格后端,QPixmapQImage周围非常薄的包装器。只要图像格式正确,转换就是无操作。

要获得与QPixmap兼容的格式,您可以使用以下代码:

QImage::Format pixmapFormat() {
    static auto format = QPixmap{1,1}.toImage().format();
    return format;
}

答案 2 :(得分:0)

之前我遇到过类似的问题,我找到的最佳解决方案是使用 OpenGL QOpenGLWidget + glDrawPixels())而不是转换QImageQPixmap