1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > QT之灰色头像(类似QQ离线头像)

QT之灰色头像(类似QQ离线头像)

时间:2018-11-01 09:22:57

相关推荐

QT之灰色头像(类似QQ离线头像)

QT之灰色头像(类似QQ离线头像)

QT之灰色头像类似QQ离线头像概要效果图上代码下代码结尾

概要

在讲正常图片转灰色图片之前,我们先来了解下灰度图。灰度图又称为灰阶图,任何颜色都由红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:

1.浮点算法:Gray=R*0.3+G*0.59+B*0.11

2.整数方法:Gray=(R*30+G*59+B*11)/100

3.移位方法:Gray =(R*76+G*151+B*28)>>8;

4.平均值法:Gray=(R+G+B)/3;

5.仅取绿色:Gray=G;

我们再来看QT提供的qGray():

对于算法不一样,即精确度不一样,得到的灰度图的效果也就不一样!浮点数运算得到的效果是最好的,取绿色得到的效果是最差的。在这里,我们使用QT提供的方法进行演示,感兴趣的可以尝试其它效果哦! O(∩_∩)O

效果图

好了,我们一起来看下代码是如何实现的。

上代码

HeadToGray::HeadToGray(QWidget *parent): QWidget(parent){ui.setupUi(this);initNormalhead();}HeadToGray::~HeadToGray(){}void HeadToGray::initNormalhead(){QPixmap normalHead = QPixmap(NORMAL_HEAD).scaled(QSize(ui.normalHead->width(), ui.normalHead->height()), Qt::KeepAspectRatio, Qt::SmoothTransformation);ui.normalHead->setPixmap(normalHead);QPixmap grayHead = QPixmap::fromImage(normalHeadToGray().scaled(QSize(ui.grayHead->width(), ui.grayHead->height()), Qt::KeepAspectRatio, Qt::SmoothTransformation));ui.grayHead->setPixmap(grayHead);}//正常图片转灰色图QImage HeadToGray::normalHeadToGray(){QImage normalHead(NORMAL_HEAD);for (int nRow = 0; nRow < normalHead.width(); nRow++){for (int nColumn = 0; nColumn < normalHead.height(); nColumn++){QRgb rgb = normalHead.pixel(nRow, nColumn);int pixNum = qGray(rgb);//使用QT提供的灰色算法normalHead.setPixel(nRow, nColumn, qRgba(pixNum, pixNum, pixNum, qAlpha(rgb)));}}return normalHead;}

下代码

类似QQ离线头像Demo下载 , 免费的,放心吧,骚年! O(∩_∩)O

结尾

只为记录,只为分享! 愿所写能对你有所帮助。Good Good Study, Day Day Up!

如果你觉得所写的对你有帮助,默默点个赞哈,你的赞就是我最大的支持,嘿嘿~不要说我骗赞哦,(^__^)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。