C#实现把彩色图片灰度化代码分享
彩色图片转为灰度图的公式如下:
gray(i,j)=0.299*Red(i,j)+0.587*Green(i,j)+0.114*Blue(i,j)
其中gray(i,j)为转化后的灰度值 (i,j)为像素点的位置。
源代码如下:
publicstaticBitmapChangeGray(Bitmapb)
{
BitmapDatabmData=b.LockBits(newRectangle(0,0,b.Width,b.Height),ImageLockMode.ReadWrite,
PixelFormat.Format24bppRgb);
intstride=bmData.Stride;//扫描的宽度
unsafe
{
byte*p=(byte*)bmData.Scan0.ToPointer();//获取图像首地址
intnOffset=stride-b.Width*3;//实际宽度与系统宽度的距离
bytered,green,blue;
for(inty=0;y<b.Height;++y)
{
for(intx=0;x<b.Width;++x)
{
blue=p[0];
green=p[1];
red=p[2];
p[0]=p[1]=p[2]=(byte)(.299*red+.587*green+.114*blue);//转换公式
p+=3;//跳过3个字节处理下个像素点
}
p+=nOffset;//加上间隔
}
}
b.UnlockBits(bmData);//解锁
returnb;
}热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短