• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#实现把彩色图片灰度化代码分享

C#实现把彩色图片灰度化代码分享

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#二维数组转灰度图,c#彩色图像灰度化,c#图像灰度化,c#灰度图,c#图片灰度化等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

gray(i,j) = 0.299 * Red(i,j)+0.587*Green(i,j)+0.114*Blue(i,j)
</div>
其中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; 
 } 
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#实现把彩色图片灰度化代码分享

相关文章

  • 2017-05-28C#实现附件上传和下载功能
  • 2017-05-28C#实现Winform中打开网页页面的方法
  • 2017-05-28深入DropDownList用法的一些学习总结分析
  • 2017-05-28C#编程自学之数据类型和变量三
  • 2017-05-28C#多线程学习之(二)操纵一个线程的方法
  • 2017-05-28基于WebRequest.RegisterPrefix的使用详解
  • 2017-05-28unity3d调用手机或电脑摄像头
  • 2017-05-28WinForm开发中屏蔽WebBrowser脚本错误提示的方法
  • 2017-05-28c# 两个数组比较,将重复部分去掉,返回不重复部分的实现
  • 2017-05-28C#中判断一个集合是否是另一个集合的子集的简单方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c#重写TabControl控件实现关闭按钮的方法
    • C#抽象类和接口的区别分析
    • C#实现网页截图功能
    • 在Linux上运行C#的方法
    • C#基础语法:结构和类区别详解
    • C#中Convert.ToInt32()和int.Parse()的区别介绍
    • C#查找列表中所有重复出现元素的方法
    • 在C#中创建和读取XML文件的实现方法
    • C#中使用WinRAR实现加密压缩及解压缩文件
    • C# 写入XML文档三种方法详细介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有