前言:
而今你们对“图片等比放大算法”都比较重视,姐妹们都需要了解一些“图片等比放大算法”的相关内容。那么小编在网络上收集了一些对于“图片等比放大算法””的相关知识,希望大家能喜欢,兄弟们快快来学习一下吧!代码如下:
QImage Image; Image.load("d:/test.jpg"); QPixmap pixmap = QPixmap::fromImage(Image); int with = ui->labPic->width(); int height = ui->labPic->height(); QPixmap fitpixmap = pixmap.scaled(with, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); // 饱满填充 //QPixmap fitpixmap = pixmap.scaled(with, height, Qt::KeepAspectRatio, Qt::SmoothTransformation); // 按比例缩放 ui->labPic->setPixmap(fitpixmap);
介绍:
scaled方法有几个参数需要介绍,方法原型:
QPixmap scaled(const QSize &s, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio, Qt::TransformationMode mode = Qt::FastTransformation) const;
参数一: 放大的size
参数二:枚举值
【领更多QT学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
点击→Qt开发进阶技术栈学习路线和资料
enum AspectRatioMode{ IgnoreAspectRatio, KeepAspectRatio, KeepAspectRatioByExpanding}
IgnoreAspectRatio 矩形框有多大,图片就缩放成多大,不限制原图片的长宽比
KeepAspectRatio 保持原图片的长宽比,且不超过矩形框的大小
KeepAspectRatioByExpanding 根据矩形框的大小最大缩放图片
参数三:枚举值
enum TransformationMode { FastTransformation, SmoothTransformation };
FastTransformation 快速缩放,
SmoothTransformation 平滑缩放
但是如果你用缩放函数去做大图片的缩略图可能会发现”快速缩放”得到的图片质量不佳, 而”平滑缩放”质量很好但速度欠佳, 特别是原图非常大的时候smoothscale简直就是个噩梦阿。 这里就可以使用被称为“Cheat Scaling”的缩小图片的技巧了, 那就是先使用”快速缩放”得到一个中等大小的图片以获得较快的缩放速度, 再使用”平滑缩放”缩小至需要的大小以获得较好的图片质量。
QImage result = img.scaled(800, 600).scaled(200, 150, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
一个公认比较好的方法是,先缩至缩略图4倍大小, 再进一步平滑缩放。 如果图片过大经过测试, 该算法甚至比“快速缩放”还要略快, 却能获得和“平滑缩放”极其接近的最终结果。
标签: #图片等比放大算法