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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨田哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值