自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Qt中使圖片像素變小

移動開發(fā)
本文主要介紹了在Qt中使圖片像素變小。編程的時候,一般都是要添加圖片的,但是圖片有很大,怎么辦?對于編程人員來說,編程那是小事,要實現(xiàn)快速化縮小圖片,先看本章吧。

本文主要介紹了在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); 

我是參照網(wǎng)上的這句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();  

還有網(wǎng)上的另外一個也有參考價值。 http://www.cuteqt.com/blog/?p=478

在Qt Labs Blog里提到了一個快速縮小大圖片的方法, 而且作者說是“幾乎所有圖形程序員都知道的trick”。 大概因為筆者不是圖形程序員的緣故, 對這個小技巧十分之陌生, 我想大家可能也有很大一部分人還不知道這個技巧, 特此memo, 希望對大家有用。

QImage提供了縮放圖片的函數(shù) scaled, 并且可以用參數(shù)指定”快速縮放(FastTransformation)”還是”平滑縮放(SmoothTransformation)”, 使用還是很方便的。 但是如果你用縮放函數(shù)去做大圖片的縮略圖可能會發(fā)現(xiàn)”快速縮放”得到的圖片質(zhì)量不佳, 而”平滑縮放”質(zhì)量很好但速度欠佳, 特別是原圖非常大的時候smoothscale簡直就是個噩夢阿。 這里就可以使用被稱為“Cheat Scaling”的縮小圖片的技巧了, 那就是先使用”快速縮放”得到一個中等大小的圖片以獲得較快的縮放速度, 再使用”平滑縮放”縮小至需要的大小以獲得較好的圖片質(zhì)量。

如下代碼:

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

一個公認比較好的方法是,先縮至縮略圖4倍大小, 再進一步平滑縮放。 按照原作者的測試, 該算法甚至比“快速縮放”還要略快, 卻能獲得和“平滑縮放”極其接近的最終結(jié)果。

小結(jié):在Qt中使圖片像素變小這篇內(nèi)容介紹完了,對于編程熟練的你,是否想熟練編程一樣熟悉它嘍,那么希望本文章能夠幫到你的忙。

【編輯推薦】

淺談Qt中多線程編程

Qt phonon多媒體框架

在Qt中如何寫控制臺程序

讓Qt應用程序只有一個實例

利用Qt繪圖實現(xiàn)QWT繪制科學圖表

責任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-15 10:08:01

Qt CVS

2011-06-28 10:03:37

Qt OpenCV qmake

2011-06-30 10:50:39

Qt OpenCV

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

2011-06-28 14:39:00

Qt 圖片

2024-09-10 09:12:40

2011-08-29 14:40:58

QTWebkit

2021-12-03 11:30:58

Python圖片像素風

2012-05-02 16:25:47

JavaSwing

2011-08-30 15:10:46

Qt圖片數(shù)據(jù)庫

2011-09-01 15:26:51

QtMysql數(shù)據(jù)庫

2011-06-24 16:41:14

QT OpenCV 框架

2013-01-28 11:34:11

云對象存儲大數(shù)據(jù)分析對象存儲

2012-07-17 13:53:34

Office 15Metro

2010-09-30 14:11:41

JSIE6.0

2013-03-28 13:27:14

Android獲取屏幕
點贊
收藏

51CTO技術(shù)棧公眾號