QT 如何使图片像素变小的问题(转载自http://blog.csdn.net/sylwlw/article/details/7732038)
来源:互联网 发布:淘宝店铺客服如何联系 编辑:程序博客网 时间:2024/05/02 01:08
这里主要介绍了在Qt中使图片像素变小,编程的时候,一般都是要添加图片的,但是图片有很大,对于编程人员来说,编程那是小事,要实现快速化缩小图片,就是头疼的事儿了,在你百思不得其解时,请往下看……
以下的代码是将一个600*400的图片弄成400*580显示出来。
- QPixmap pixmap(":/set_background600x400.png");
- QPixmap fitpixmap=pixmap.scaled(400,560, Qt::KeepAspectRatio);
- label->setPixmap(fitpixmap);
我是参照网上的这句QPixmap fitPixmap = pixmap.scaled(width(),height(), Qt::KeepAspectRatio);
我的例子:
#ifndef TEXT_H
#define TEXT_H
#include <QApplication>
#include <QLabel>
#include <QPainter>
#include <QpaintEvent>
class magic:public QWidget
{
public:
magic(QWidget *parent=0);
private:
QLabel *label;
// void paintEvent(QPaintEvent *);
};
#endif // TEXT_H
#include "text.h"
magic::magic(QWidget *parent):QWidget(parent)
{
setGeometry(20,20,800,600);
label=new QLabel(this);
label->setGeometry(QRect(10, 10, 400, 580));
QPixmap pixmap(":/set_background600x400.png");
QPixmap fitpixmap=pixmap.scaled(500, 500).scaled(400,560, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
label->setPixmap(fitpixmap);
}
int main(int argc,char **argv)
{
QApplication app(argc,argv);
magic M;
M.show();
return app.exec();
}
还有网上的另外一个也有参考价值。 http://www.cuteqt.com/blog/?p=478
在Qt Labs Blog里提到了一个快速缩小大图片的方法, 而且作者说是“几乎所有图形程序员都知道的trick”。 大概因为笔者不是图形程序员的缘故, 对这个小技巧十分之陌生, 我想大家可能也有很大一部分人还不知道这个技巧, 特此memo, 希望对大家有用。
QImage提供了缩放图片的函数 scaled, 并且可以用参数指定”快速缩放(FastTransformation)”还是”平滑缩放(SmoothTransformation)”, 使用还是很方便的。 但是如果你用缩放函数去做大图片的缩略图可能会发现”快速缩放”得到的图片质量不佳, 而”平滑缩放”质量很好但速度欠佳, 特别是原图非常大的时候smoothscale简直就是个噩梦阿。 这里就可以使用被称为“Cheat Scaling”的缩小图片的技巧了, 那就是先使用”快速缩放”得到一个中等大小的图片以获得较快的缩放速度, 再使用”平滑缩放”缩小至需要的大小以获得较好的图片质量。
如下代码:
QImage result = img.scaled(800, 600).scaled(200, 150, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
一个公认比较好的方法是,先缩至缩略图4倍大小, 再进一步平滑缩放。 按照原作者的测试, 该算法甚至比“快速缩放”还要略快, 却能获得和“平滑缩放”极其接近的最终结果。
另外Qt中按钮背景图片的切换如下设置:
ui->btn_name->setStyleSheet("QPushButton{background-image: url(:/images/call_up.bmp);}"
"QPushButton:hover{background-image: url(:/images/call_hov.bmp);}"
"QPushButton:pressed{background-image: url(:/images/call_down.bmp);}");
或者设置为字符串的形式,在初始化时调用:
如
QString str="QPushButton#btn_name{background-image: url(:/images/call_up.bmp)}"
"QPushButton#btn_name:hover{background-image: url(:/images/call_hov.bmp);}"
"QPushButton#btn_name:pressed{background-image: url(:/images/call_down.bmp);}";
ui->btn_name->setFlat(true
);
//这句能够实现按钮透明
- QT 如何使图片像素变小的问题(转载自http://blog.csdn.net/sylwlw/article/details/7732038)
- 转载自http://blog.csdn.net/fei20072050104/article/details/21785565
- 转载自:http://blog.csdn.net/lmj623565791/article/details/24015867
- 转载自 http://blog.csdn.net/racehorse/article/details/6593719
- 转载自http://blog.csdn.net/zhengzhihust/article/details/44151785
- 转载自http://blog.csdn.net/huxu981598436/article/details/51626569
- 转载自http://blog.csdn.net/lwyygydx/article/details/41870377
- 转载自:http://blog.csdn.net/go_hyp/article/details/53693058
- 转载自 http://blog.csdn.net/bieleyang/article/details/76973220
- 转载自http://blog.csdn.net/wwww1988600/article/details/7309070
- C++的内存管理(转载自:http://blog.csdn.net/bizhu12/article/details/6668834)
- Java的XML创建、解析文档(转载自http://blog.csdn.net/psyuhen/article/details/7539228)
- dispatch_get_main_queue 转载自http://blog.csdn.net/nono_love_lilith/article/details/7829557 的空间
- C++ 运算符的重载(转载自http://blog.csdn.net/insistgogo/article/details/6626952)
- 关于GCD 的全解(转载自http://blog.csdn.net/wangqiuyun/article/details/19198467)
- 接口和抽象的解释!(转载自http://blog.csdn.net/fenglibing/article/details/2745123)
- selenium使用中遇到的问题,转自:http://blog.csdn.net/funi16/article/details/9036753
- 如何在Android的XML文件中添加注释 本文转载自http://blog.csdn.net/pipisorry/article/details/24833325,感谢原创大神!
- 韩国创业公司Hdac试图保障物联网未来
- 逝去未央 未来你好
- 《JAVA编程技巧1001条》第339条:数学函数 ARCCOS
- 加密货币市值突破5000亿美元,超越股神公司市值
- Parity Technologies提议用硬分叉释放被锁定的以太币
- QT 如何使图片像素变小的问题(转载自http://blog.csdn.net/sylwlw/article/details/7732038)
- Mybatis_sql映射文件
- 俄总统顾问建议使用加密货币避开经济制裁
- 物联网安全的三个重点
- 韩国为加密货币交易所设置六大运营条件
- 天天学Linux命令55--ps命令
- 设置变量的值
- C语言作业题(4)
- spring boot devtools实现热部署