public static Bitmap MakeGrayscale3(Bitmap original)
{
#region 原文
//创建一个与原始大小相同的空白位图
Bitmap newBitmap = new Bitmap(original.Width, original.Height);
//从新图像中获取图形对象
Graphics g = Graphics.FromImage(newBitmap);
//创建灰度颜色矩阵
System.Drawing.Imaging.ColorMatrix colorMatrix = new System.Drawing.Imaging.ColorMatrix(
new float[][]
{
new float[] {.3f, .3f, .3f, 0, 0},
new float[] {.59f, .59f, .59f, 0, 0},
new float[] {.11f, .11f, .11f, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1}
});
//创建一些图像属性
ImageAttributes attributes = new ImageAttributes();
//设置颜色矩阵属性
attributes.SetColorMatrix(colorMatrix);
//在新图像上绘制原始图像
//使用灰度颜色矩阵
g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
//处理图形对象
g.Dispose();
return newBitmap;
#endregion
}