QT之灰色头像(类似QQ离线头像)
生活随笔
收集整理的這篇文章主要介紹了
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!
如果你覺得所寫的對你有幫助,默默點個贊哈,你的贊就是我最大的支持,嘿嘿~不要說我騙贊哦,(^__^)
總結
以上是生活随笔為你收集整理的QT之灰色头像(类似QQ离线头像)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [寒江孤叶丶的Cocos2d-x之旅_1
- 下一篇: Dev-c++下‘stoi‘ was n