许伟群的专栏

水浒棋牌(www.108game.cn)

原创 QQ头像变灰算法[图]收藏

新一篇: 图片镂空算法集合[图] | 旧一篇: 字符集之间转换(UTF-8,UNICODE,Gb2312)

1.查看QQ不在线图标,目测由白灰黑,三种颜色.
2.打开画图工具,查看了灰色的RGB......惊喜.......原来灰色的RGB 3个参数多是相同的.
3.所以推断每个不在线头像的像素是在线头像R G B 的平均值.
   网友"string"给了个比较专业的公式(R*0.299 + G*0.587 + B*0.114 )
4.操作:取得一个像数,然后取得R ,G ,B,计算平均,然后将平均值设置回像数.
5.以下是代码:

COLORREF cr = ::GetPixel(hDC,i,j);
int nR = GetRValue(cr);
int nG = GetGValue(cr);
int nB = GetBValue(cr);
//int nPer= (nR+nG+nB)/3;  //这两种方法,肉眼确实很难看的出差别
int nPer = nR*0.299 + nG*0.587 + nB*0.114

cr = RGB(nPer,nPer,nPer);
::SetPixel(hDC,i,j,cr);

6.效果图

发表于 @ 2006年11月07日 00:46:00|评论(loading...)|编辑

新一篇: 图片镂空算法集合[图] | 旧一篇: 字符集之间转换(UTF-8,UNICODE,Gb2312)

评论

#rjchen 发表于2006-11-07 09:30:00  IP: 210.77.134.*
我是CSDN Blog的负责人陈瑞江,希望和你认识,msn:rjchen_et@hotmail.com 。
#sting 发表于2006-11-07 11:22:00  IP: 57.72.66.*
R,G,B三通道取平均是grayscale算法的一种。其实更常用的公式是:
Gray = R*0.299 + G*0.587 + B*0.114
#许伟群 发表于2006-11-07 11:33:00  IP: 58.100.51.*
string的算法(Gray = R*0.299 + G*0.587 + B*0.114 )我试过了,不过我要的是QQ的效果,碰巧QQ也是平均值
#sting 发表于2006-11-07 16:29:00  IP: 57.72.66.*
我给出的公式算出来也是灰度图啊,效果都是差不多的,只是这个公式更常用而已。如果QQ自己也采用R、G、B三分量取平均算法,那我只能说它比较土了。
#许伟群 发表于2006-11-07 17:26:00  IP: 58.100.51.*
好的,我用你的方法试试,之前我弄错了,我只是目测和QQ一样,确实没实际试过.
#laviewpbt 发表于2006-11-07 17:39:00  IP: 61.187.64.*
不就是灰度处理嘛.
#许伟群 发表于2006-11-08 11:50:00  IP: 58.100.51.*
采用了string 给的方法,和平均值相比,肉眼看不出来.
#xiezengguang 发表于2006-11-09 17:35:00  IP: 61.167.60.*
我原来认为是有2张图片呢
一个是带彩色的
一个是灰显的

现在看来,如果这个可以的话
的确要简单很多
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 许伟群