解析C#彩色图像灰度化算法的实现代码详解

 更新时间:2013年05月20日 10:07:20   作者:  
本篇文章是对C#中彩色图像灰度化算法的实现进行了详细的分析介绍,需要的朋友参考下
代码如下所示:
复制代码 代码如下:

        public static Bitmap MakeGrayscale(Bitmap original)
        {
            //create a blank bitmap the same size as original
            Bitmap newBitmap = new Bitmap(original.Width, original.Height);
            //get a graphics object from the new image
            Graphics g = Graphics.FromImage(newBitmap);
            //create the grayscale ColorMatrix
            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}
              });
            //create some image attributes
            System.Drawing.Imaging.ImageAttributes attributes = new System.Drawing.Imaging.ImageAttributes();
            //set the color matrix attribute
            attributes.SetColorMatrix(colorMatrix);
            //draw the original image on the new image
            //using the grayscale color matrix
            g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
               0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);
            //dispose the Graphics object
            g.Dispose();
            return newBitmap;
        }

相关文章

  • C#.NET 图片水印添加代码

    C#.NET 图片水印添加代码

    这篇文章主要为大家详细介绍了C#.NET 图片水印添加代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • C# [ImportDll()] 知识小结

    C# [ImportDll()] 知识小结

    今天小编就为大家分享一篇关于C# [ImportDll()] 知识小结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • WPF+ASP.NET SignalR实现后台通知功能的示例代码

    WPF+ASP.NET SignalR实现后台通知功能的示例代码

    本文以一个简单示例,简述如何通过WPF+ASP.NET SignalR实现消息后台通知以及数据的实时刷新,仅供学习分享使用,如有不足之处,还请指正
    2022-09-09
  • C#开发微信门户及应用(2) 微信消息处理和应答

    C#开发微信门户及应用(2) 微信消息处理和应答

    文章主要为大家详细介绍了C#开发微信门户及应用第二篇,微信消息处理和应答,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • c#中文转unicode字符示例分享

    c#中文转unicode字符示例分享

    本文介绍了中文转unicode字符的方法,还有UNICODE字符转为中文的方法,大家参考使用吧
    2014-01-01
  • Winform控件优化之圆角按钮1

    Winform控件优化之圆角按钮1

    这篇文章主要介绍了Winform控件优化之圆角按钮,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-08-08
  • 使用linq to xml修改app.config示例(linq读取xml)

    使用linq to xml修改app.config示例(linq读取xml)

    这篇文章主要介绍了使用linq to xml修改app.config示例,需要的朋友可以参考下
    2014-02-02
  • C#集合本质之链表的用法详解

    C#集合本质之链表的用法详解

    本文详细讲解了C#集合本质之链表的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • C#中String.LastIndexOf方法小结

    C#中String.LastIndexOf方法小结

    String.LastIndexOf()是C#中string类的一个方法,它用于在字符串中查找指定子字符串(或字符)最后一次出现的位置,并返回其索引,本文主要介绍了C#中String.LastIndexOf方法小结,感兴趣的可以了解一下
    2024-01-01
  • C# 使用动态库DllImport("kernel32")读写ini文件的步骤

    C# 使用动态库DllImport("kernel32")读写ini文件的步骤

    kernel32.dll是Windows中非常重要的32位动态链接库文件,属于内核级文件,这篇文章主要介绍了C# 利用动态库DllImport("kernel32")读写ini文件,需要的朋友可以参考下
    2023-05-05

最新评论