C#实现把彩色图片灰度化代码分享
2014-08-15 08:55
1756 查看
彩色图片转为灰度图的公式如下:
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; }
您可能感兴趣的文章:
相关文章推荐
- 解析C#彩色图像灰度化算法的实现代码详解
- 解析C#彩色图像灰度化算法的实现代码详解
- c#实现网页图片提取工具代码分享
- 24位真彩色位图转换成8位灰度图片的代码实现
- 用php实现百度网盘图片直链的代码分享
- 【年终分享】彩票数据预测算法(一):离散型马尔可夫链模型实现【附C#代码】
- C#图片截取压缩(百分比压缩/大小压缩)实现代码
- asp.net +C# +sql2000 实现仿csdn的图片轮换代码
- 24位真彩色位图转换成8位灰度图片的代码实现
- .net c# gif动画如何添加图片水印实现思路及代码
- ASP.NET图片加水印的实现代码(C#)
- c# socket编程udp客户端实现代码分享
- 根据Merge Sort原理, 自己实现的归并排序算法+详细注释+代码(C#,C/C++) [分享]
- C# 实现图片旋转的代码 张宇轩
- .net c# gif动画如何添加图片水印实现思路及代码
- C#实现对图片加水印的一段代码.
- 分享C#实现XML和实体序列化和反序列化的代码
- c#打印预览控件中实现用鼠标移动页面功能代码分享
- asp.net(c#)实现从sqlserver存取二进制图片的代码
- JavaScript图片放大技术(放大镜)实现代码分享