C#图像灰度化源代码

  彩色图片转为灰度图的公式如下

公式:

 gray(i,j) = 0.299 * Red(i,j)+0.587*Green(i,j)+0.114*Blue(i,j)

 

其中gray(i,j) 为转化后的灰度值  (i,j)为像素点的位置

 

源代码如下

    public static Bitmap ChangeGray(Bitmap b)  
    {  
        BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite,  
            PixelFormat.Format24bppRgb);  
        int stride = bmData.Stride;         // 扫描的宽度  
      
      
        unsafe  
        {  
            byte* p = (byte*)bmData.Scan0.ToPointer(); // 获取图像首地址  
            int nOffset = stride - b.Width * 3;        // 实际宽度与系统宽度的距离  
            byte red, green, blue;  
            for (int y = 0; y < b.Height; ++y)  
            {  
                for (int x = 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);   // 解锁  
        return b;  
    }  

 

加支付宝好友偷能量挖...


评论(0)网络
阅读(83)喜欢(0)Asp.Net/C#/WCF