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++对于大型图片的加载缩放尝试相关推荐

  1. jquery图片预加载+自动等比例缩放插件

    /* **************图片预加载插件****************** ///作者:没剑(2008-06-23) ///http://regedit.cnblogs.com ///说明: ...

  2. 面试题系列(10):一个大型电商网有大量的图片,加载很慢,你有哪些方法优化这些图片的加载?...

    A. 图片懒加载,滚动到相应位置才加载图片.原理是这个可以用js监控滚动的位置,当初图片位置出现或者即将出现在可视区域时,进行加载. B. 图片预加载,如果为幻灯片.相册等,将当前展示图片的前一张和后 ...

  3. android复位机器人图片_Universal-Image-Loader 图片异步加载类库还不熟?

    码个蛋(codeegg) 第 824 次推文 作者:欢醉 博客:https://cloud.tencent.com/developer/article/1026386 码妞看世界 写在前面 这个图片异 ...

  4. 分页组件change_javascript原生瀑布流+图片懒加载组件

    我不是天使:javascript原生手动分页组件​zhuanlan.zhihu.com 我不是天使:javascript原生自定义轮播图组件​zhuanlan.zhihu.com 一大早就去办签证,啦 ...

  5. ImageLoader 图片异步加载类库的使用

    http://blog.csdn.net/vipzjyno1/article/details/23206387 这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用, ...

  6. ios wkweb设置图片_ios·WKWebView\UIWebView加载HTMLString,实现图片懒加载

    背景: 项目中开发商品类型数据,数据可变性较大,所以商品详情数据存在文案和图片富文本显示,后台返回了html格式的数据供前端展示. 如果用webView直接显示的话,需要等html内容完全展示才能获取 ...

  7. [js] 图片懒加载

    懒加载使用场景 在一些图片量比较大的场景(电商首页,小程序首页等),如果我们打开页面时就加载所有的图片,那势必会导致页面的卡顿以及白屏,给用户不好的体验,导致用户流失. 但是我们仔细想一下,用户真的需 ...

  8. echarts树图图标修改成图片以及自定义图片首次加载不显示的问题的修改<js>

    首先看一下显示效果,如下图所示: 1.首先修改图片,在option对象中加入 下方代码就可实现图片的修改,但是存在bug symbol:'image://https://ss2.bdstatic.co ...

  9. 使用QT实现一个图像处理软件1 —— 图片的加载和显示

    为了实现图片的加载和显示,本文主要将使用到Qt中的几个类,分别是: QImage,这是Qt实现的一个存储图片信息的类,支持大部分的图片格式,支持像素操作,后续所有的图像处理算法都将在这个类的基础上进行 ...

最新文章

  1. java dagger2_java – Dagger2不生成Daggercomponent类
  2. sqlserver 参数化查询 允许为null_1+Null 居然等于 Null
  3. ESXi主机遗忘密码重置密码
  4. 软件工程的实践项目课程的自我目标
  5. 拉杰尔安卓服务器注册上限,拉结尔多开养小号刷副本 用多多云手机离线能升级...
  6. ubuntu终端切换快捷键
  7. vert.x 分布式锁_使用Vert.x进行响应式开发
  8. 课时2.浏览器和服务器(了解)
  9. uni-app和php交互DES加密解密数据
  10. 关于安卓listview获得item中的控件问题
  11. 虚拟化桌面初始化配置处理
  12. nginx+pm2+nodejs部署
  13. intouch的报警怎么发到邮件上
  14. mac 下安装iwork+ps+nx2
  15. IT寡头们之间的围棋模式;最新动向:多点布局,规模经营和资本扩张
  16. 采用大规模或超大规模集成电路的计算机,采用大规模或超大规模集成电路的计算机属于_____计算机。...
  17. 小学数学研究性学习设计方案
  18. slurm任务管理相关命令
  19. window10无法访问局域网共享文件夹
  20. 老友记台词中英文对照Part1

热门文章

  1. web安全----XSS漏洞之基本原理
  2. 伪静态设置 html,Apache下伪静态html(URL Rewrite)的设置方法
  3. uva 11925——Generating Permutations
  4. linux下隐藏输入密码
  5. 268. 缺失数字 golang
  6. 461. 汉明距离 golang
  7. 软件工程---4.需求工程
  8. C++虚继承中构造函数和析构函数顺序问题以及原理
  9. 1031. 查验身份证(15)
  10. 保驾护航金三银四,分分钟搞定!