Qt缩放图片效率比较

16 篇文章 23 订阅
更多精彩内容
👉个人内容分类汇总 👈

图片Qt缩放并图片效率比较🤙

  • 在Qt里常用的图片显示方式一般是QLabel、QPainter、OpenGL,但是QLabel效率低,OpenGL使用麻烦,不适合初学者,所以一般我们都是使用QPainter绘制图片;
  • 而图片显示会遇见图片缩放问题,这就需要用到QPixmap或者QImage自带的scaled函数了,同时考虑到效率问题,我们也需要将图片转换为QPixmap进行显示,这里就比较了一下两种使用方式的效率;
    • 方式一:先将QImage图片进行缩放,然后转换为QPixmap图片;
    • 方式二:先将QImage图片转换为QPixmap图片,再进行缩放。
  • 关键代码👍
/**
 * @brief        使用Qpainter显示图片
 * @param event
 */
void PlayImage::paintEvent(QPaintEvent *event)
{
    if(!m_image.isNull())
    {
        QPainter painter(this);
        QElapsedTimer timer;
        timer.start();
#if 1
        // 经过粗略测试,QImage先缩放后转为QPixmap的方式在图像比较小时耗时少,图片越大耗时远大
        QPixmap pixmap = QPixmap::fromImage(m_image.scaled(this->size(), Qt::KeepAspectRatio));
        qint64 t1 = timer.elapsed();
        timer.start();
        // 先将QImage转换为QPixmap再进行缩放则耗时比较少,并且稳定,不会因为缩放图片大小而产生太大影响
        QPixmap pixmap1 = QPixmap::fromImage(m_image).scaled(this->size(), Qt::KeepAspectRatio);
#endif
        qDebug() << t1 << "  " << timer.elapsed() <<"  "<< this->size();
        int x = (this->width() - pixmap.width()) / 2;
        int y = (this->height() - pixmap.height()) / 2;
        painter.drawPixmap(x, y, pixmap);
    }
    QWidget::paintEvent(event);
}
  • 测试方式: 保持窗口高度不变,改变窗口宽度,打印两种方式的耗时;🕝
  • 测试结果:方式二效率普遍高于方式1,并且比较稳定。
    在这里插入图片描述
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mahuifa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值