Qt中使图片像素变小 绉嬪ぉ鐪熷疄鍥剧墖涓嬭浇
创始人
2024-07-31 16:20:20
0

本文主要介绍了在Qt中使图片像素变小。对于编程人员来说,编程那是小事,大概因为笔者不是图形程序员的缘故,对这个小技巧十分之陌生,我想大家可能也有很大一部分人还不知道这个技巧,特此memo,希望对大家有用。

以下的代码是将一个600*400的图片弄成400*580显示出来。

  1. QPixmap pixmap(":/set_background600x400.png");  
  2. QPixmap fitpixmap=pixmap.scaled(400,560, Qt::KeepAspectRatio);  
  3. label->setPixmap(fitpixmap); 

我是参照网上的这句QPixmap fitPixmap = pixmap.scaled(width(),height(), Qt::KeepAspectRatio);

我的例子:

  1. #ifndef TEXT_H  
  2. #define TEXT_H  
  3. #include  
  4. #include  
  5. #include  
  6. #include  
  7. //#include <> 
  8. class magic:public QWidget  
  9. {  
  10. public:  
  11. magic(QWidget *parent=0);  
  12. private:  
  13. QLabel *label;  
  14. //void paintEvent(QPaintEvent *);  
  15. };  
  16. #endif // TEXT_H  
  17. #include "text.h"  
  18. magic::magic(QWidget *parent):QWidget(parent)  
  19. {  
  20. setGeometry(20,20,800,600);  
  21. label=new QLabel(this);  
  22. label->setGeometry(QRect(10, 10, 400, 580));  
  23. QPixmap pixmap(":/set_background600x400.png");  
  24. QPixmap fitpixmap=pixmap.scaled(500, 500).scaled(400,560, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);  
  25. label->setPixmap(fitpixmap);  
  26. }  
  27. int main(int argc,char **argv)  
  28. {  
  29. QApplication app(argc,argv);  
  30. magic M;  
  31. M.show();  
  32. return app.exec();  

还有网上的另外一个也有参考价值。 http://www.cuteqt.com/blog/?p=478

在Qt Labs Blog里提到了一个快速缩小大图片的方法, 而且作者说是“几乎所有图形程序员都知道的trick”。 大概因为笔者不是图形程序员的缘故, 对这个小技巧十分之陌生, 我想大家可能也有很大一部分人还不知道这个技巧, 特此memo, 希望对大家有用。

QImage提供了缩放图片的函数 scaled, 并且可以用参数指定”快速缩放(FastTransformation)”还是”平滑缩放(SmoothTransformation)”, 使用还是很方便的。 但是如果你用缩放函数去做大图片的缩略图可能会发现”快速缩放”得到的图片质量不佳, 而”平滑缩放”质量很好但速度欠佳, 特别是原图非常大的时候smoothscale简直就是个噩梦阿。 这里就可以使用被称为“Cheat Scaling”的缩小图片的技巧了, 那就是先使用”快速缩放”得到一个中等大小的图片以获得较快的缩放速度, 再使用”平滑缩放”缩小至需要的大小以获得较好的图片质量。

如下代码:

  1. QImage result = img.scaled(800, 600).scaled(200, 150, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); 

一个公认比较好的方法是,先缩至缩略图4倍大小, 再进一步平滑缩放。 按照原作者的测试, 该算法甚至比“快速缩放”还要略快, 却能获得和“平滑缩放”极其接近的最终结果。

小结:在Qt中使图片像素变小这篇内容介绍完了,对于编程熟练的你,是否想熟练编程一样熟悉它喽,那么希望本文章能够帮到你的忙。

【编辑推荐】

浅谈Qt中多线程编程

Qt phonon多媒体框架

在Qt中如何写控制台程序

让Qt应用程序只有一个实例

利用Qt绘图实现QWT绘制科学图表

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...