Qt中使图片像素变小

移动开发
本文主要介绍了在Qt中使图片像素变小。编程的时候,一般都是要添加图片的,但是图片有很大,怎么办?对于编程人员来说,编程那是小事,要实现快速化缩小图片,先看本章吧。

本文主要介绍了在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 <QApplication> 
  4. #include <QLabel> 
  5. #include <QPainter> 
  6. #include <QpaintEvent> 
  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绘制科学图表

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-15 10:08:01

Qt CVS

2011-06-30 10:50:39

Qt OpenCV

2011-06-28 10:03:37

Qt OpenCV qmake

2011-06-10 09:09:38

Qt Creator OpenCV

2011-06-09 16:18:25

Qt GUI

2011-06-14 13:43:38

QT 图片

2011-06-08 16:56:37

VS2008 Qt

2021-12-03 11:30:58

Python图片像素风

2011-06-28 14:39:00

Qt 图片

2012-05-02 16:25:47

JavaSwing

2011-08-29 14:40:58

QTWebkit

2011-08-30 15:10:46

Qt图片数据库

2011-09-01 15:26:51

QtMysql数据库

2011-06-24 16:41:14

QT OpenCV 框架

2010-09-30 14:11:41

JSIE6.0

2012-07-17 13:53:34

Office 15Metro

2013-01-28 11:34:11

云对象存储大数据分析对象存储

2013-03-28 13:27:14

Android获取屏幕

2016-05-18 14:20:12

LinuxgThumb图片
点赞
收藏

51CTO技术栈公众号