繁体   English   中英

从QImage到QPixmap是昂贵的

[英]QImage to QPixmap is expensive

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

如果您正确阅读了文档,则说明了所有内容。

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

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

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

您不必进行转换。 确保图像采用后备存储格式,只需在小部件上使用drawImage即可。 尽可能快。

使用默认的栅格后端, QPixmap是围绕QImage的非常薄的包装器。 只要图像具有正确的格式,则转换是无操作的。

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

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

之前我也遇到过类似的问题,发现的最佳解决方案是使用OpenGLQOpenGLWidget + glDrawPixels() )而不是将QImage转换为QPixmap

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM