解决Qt 大尺寸图片的放大时速度慢

项目场景:

有大图片需要显示,长宽至少都是几k的


问题描述

直接使用QPixmap::scaled()方法,Qt::FastTransformation会导致图像质量不佳,Qt::SmoothTransformation在缩放比例比较大的时候速度比较慢,有点卡顿


解决方案:

缩放比在一定的比例之下,使用如下方式,个人使用的比例是50%,即缩放比在50%一下,直接将原图通过SmoothTransformation的方式缩小

QPixmap QPixmap::scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::SmoothTransformation) const

在比例之上,使用下面的方式,当缩放比大于指定比例时,先裁剪出其中用于显示的部分,然后将裁剪后的图片缩放到显示的尺寸

auto tmp = pixmap.copy(clip_rect);
display = tmp.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);

对于比例之上的缩放方式,移动的时候需要更新显示的内容

注意:

以上测试图像尺寸为 4000 x 5000,更大的尺寸没有试过, 料想通过调整比例,可以丝滑显示更大的图片
以上代码对于小图没有任何影响,因为太小了,操作很快。测试960x960的图片,没有任何影响
有尝试过将缩放比例从50调整为150或者100的样子,从50 - 指定比例之间,缩放的速度显著变慢

效果展示:

实际缩放到 30000%速度依然很快
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值