C++对于大型图片的加载缩放尝试
Qt对于图片的操作主要集中在这几个类 QImage ,QImageReader ,QPixmap
其中QImage这个类对图片的缩放有几个很不错的技巧,不过对于大图片却并不好使,当我们去看QImage的实现代码时,会发现其中读取QImageReader来加载图片,当我们去看QImageReader的实现的时候,我们会发现QImageReader的加载模式是unbuffer-->无缓冲加载模式,而且加载速度也是相当的快,所以QImageReader对大图片进行缩放很好使.
但是QImage也是有一些独特的优势,在内存数据或者不是超大数据图片时,进行平缓缩放(特别是两步缩放的时候,时间效率和图片质量都还是相当不错的)
下面逐一说明,对于QImage如何进行平滑缩放
1 /*设定图片大小*/ 2 unsigned int image_width ,image_height; 3 4 image_width=1000; 5 image_height=1000; 6 7 QImage m_image("D:\\123.jpg"); 8 /* 9 *首先缩放到我们设定大小的四倍,在缩放到我们需要缩放的 10 *大小(时间效果很快,图片质量比较好) 11 *需要结合快速减半法一起使用. 12 */ 13 QImage m_res = m_image.scaled(image_width<<2, 14 image_height<<2).scaled(image_width, image_height,Qt::IgnoreAspectRatio,Qt::SmoothTransformation 15 ); 16 17 QLabel *m_label= new QLabel; 18 m_label->setPixmap(QPixmap::fromImage(m_image)); 19 m_label->show();
对于QImageReader则可以这样设定图片(可以任意比例)
QImage img;QImageReader reader; // 设置图片名reader.setFileName("D:\\123.jpg"); // 读取图片大小//sleep(30000);QSize imageSize = reader.size(); // 缩放图片尺寸以适应屏幕大小//imageSize.scale(100,100,); //设定宽度高度比例//imageSize.scale(100,Qt::KeepAspectRatio); // 设置图片大小imageSize.setHeight(500);imageSize.setWidth(500);reader.setScaledSize(imageSize);img= reader.read(); // 读取图片QLabel *m_label= new QLabel;//m_label->resize(image_width,image_height);img.save("D://4567.jpg");m_label->setPixmap(QPixmap::fromImage(img));m_label->show();
不过很可惜,对于超大图片而言,Qt只能对于支持的图片进行操作(比如jpeg由于是8*8block的模式,支持一行一行读取,所以可以节省较大的内存空间),而对于其他不支持的格式,当面临较大的尺寸时,会出现因为内存太大,而无法加载的情况...
C++对于大型图片的加载缩放尝试相关推荐
- jquery图片预加载+自动等比例缩放插件
/* **************图片预加载插件****************** ///作者:没剑(2008-06-23) ///http://regedit.cnblogs.com ///说明: ...
- 面试题系列(10):一个大型电商网有大量的图片,加载很慢,你有哪些方法优化这些图片的加载?...
A. 图片懒加载,滚动到相应位置才加载图片.原理是这个可以用js监控滚动的位置,当初图片位置出现或者即将出现在可视区域时,进行加载. B. 图片预加载,如果为幻灯片.相册等,将当前展示图片的前一张和后 ...
- android复位机器人图片_Universal-Image-Loader 图片异步加载类库还不熟?
码个蛋(codeegg) 第 824 次推文 作者:欢醉 博客:https://cloud.tencent.com/developer/article/1026386 码妞看世界 写在前面 这个图片异 ...
- 分页组件change_javascript原生瀑布流+图片懒加载组件
我不是天使:javascript原生手动分页组件zhuanlan.zhihu.com 我不是天使:javascript原生自定义轮播图组件zhuanlan.zhihu.com 一大早就去办签证,啦 ...
- ImageLoader 图片异步加载类库的使用
http://blog.csdn.net/vipzjyno1/article/details/23206387 这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用, ...
- ios wkweb设置图片_ios·WKWebView\UIWebView加载HTMLString,实现图片懒加载
背景: 项目中开发商品类型数据,数据可变性较大,所以商品详情数据存在文案和图片富文本显示,后台返回了html格式的数据供前端展示. 如果用webView直接显示的话,需要等html内容完全展示才能获取 ...
- [js] 图片懒加载
懒加载使用场景 在一些图片量比较大的场景(电商首页,小程序首页等),如果我们打开页面时就加载所有的图片,那势必会导致页面的卡顿以及白屏,给用户不好的体验,导致用户流失. 但是我们仔细想一下,用户真的需 ...
- echarts树图图标修改成图片以及自定义图片首次加载不显示的问题的修改<js>
首先看一下显示效果,如下图所示: 1.首先修改图片,在option对象中加入 下方代码就可实现图片的修改,但是存在bug symbol:'image://https://ss2.bdstatic.co ...
- 使用QT实现一个图像处理软件1 —— 图片的加载和显示
为了实现图片的加载和显示,本文主要将使用到Qt中的几个类,分别是: QImage,这是Qt实现的一个存储图片信息的类,支持大部分的图片格式,支持像素操作,后续所有的图像处理算法都将在这个类的基础上进行 ...
最新文章
- java dagger2_java – Dagger2不生成Daggercomponent类
- sqlserver 参数化查询 允许为null_1+Null 居然等于 Null
- ESXi主机遗忘密码重置密码
- 软件工程的实践项目课程的自我目标
- 拉杰尔安卓服务器注册上限,拉结尔多开养小号刷副本 用多多云手机离线能升级...
- ubuntu终端切换快捷键
- vert.x 分布式锁_使用Vert.x进行响应式开发
- 课时2.浏览器和服务器(了解)
- uni-app和php交互DES加密解密数据
- 关于安卓listview获得item中的控件问题
- 虚拟化桌面初始化配置处理
- nginx+pm2+nodejs部署
- intouch的报警怎么发到邮件上
- mac 下安装iwork+ps+nx2
- IT寡头们之间的围棋模式;最新动向:多点布局,规模经营和资本扩张
- 采用大规模或超大规模集成电路的计算机,采用大规模或超大规模集成电路的计算机属于_____计算机。...
- 小学数学研究性学习设计方案
- slurm任务管理相关命令
- window10无法访问局域网共享文件夹
- 老友记台词中英文对照Part1