private class Consts
{
// 根据 NTSC (North America Television Standards Committee)
// 规定,红绿蓝值分别为 0.299, 0.587, 0.114时为灰度图
public const float GrayRed = 0.3086f;
public const float GrayGreen = 0.6094f;
public const float GrayBlue = 0.082f;
}
/// <summary>
/// 转换彩色图片为灰度图
/// </summary>
/// <param name="image"></param>
public static void ConvertToGrayscale(Image image)
{
DrawImage(image, GetGrayscaleMatrix());
}
/// <summary>
/// 设置转换矩阵
/// </summary>
/// <returns></returns>
public static float[][] GetGrayscaleMatrix()
{
// Set the luminosity of the colors using grayscale weighting
float[][] matrix = {
new float[] {Consts.GrayRed, Consts.GrayRed, Consts.GrayRed, 0, 0},
new float[] {Consts.GrayGreen, Consts.