[GDI+]如何将一个彩色图像转换成黑白图像

原创 2004年10月26日 10:47:00

彩色图像转换为黑白图像时需要计算图像中每像素有效的亮度值,通过匹配像素

亮度值可以轻松转换为黑白图像。

计算像素有效的亮度值可以使用下面的公式:

Y=0.3RED+0.59GREEN+0.11Blue

然后使用 Color.FromArgb(Y,Y,Y) 来把计算后的值转换

转换代码可以使用下面的方法来实现:

None.gif[C#]
None.gif
None.gif
public Bitmap ConvertToGrayscale(Bitmap source)
None.gif
ExpandedBlockStart.gif
{
InBlock.gif
InBlock.gif  Bitmap bm 
= new Bitmap(source.Width,source.Height);
InBlock.gif
InBlock.gif  
for(int y=0;y<bm.Height;y++)
InBlock.gif
ExpandedSubBlockStart.gif  
{
InBlock.gif
InBlock.gif    
for(int x=0;x<bm.Width;x++)
InBlock.gif
ExpandedSubBlockStart.gif    
{
InBlock.gif
InBlock.gif      Color c
=source.GetPixel(x,y);
InBlock.gif
InBlock.gif      
int luma = (int)(c.R*0.3 + c.G*0.59+ c.B*0.11);
InBlock.gif
InBlock.gif      bm.SetPixel(x,y,Color.FromArgb(luma,luma,luma));
InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
ExpandedSubBlockEnd.gif  }

InBlock.gif
InBlock.gif  
return bm;
InBlock.gif
ExpandedBlockEnd.gif}

 

 

None.gif[VB]
None.gif
ExpandedBlockStart.gif
Public Function ConvertToGrayscale(ByVal source As Bitmap) as Bitmap
InBlock.gif
InBlock.gif  
Dim bm as new Bitmap(source.Width,source.Height)
InBlock.gif
InBlock.gif  
Dim x
InBlock.gif
InBlock.gif  
Dim y
InBlock.gif
InBlock.gif  
For y=0 To bm.Height
InBlock.gif
InBlock.gif    
For x=0 To bm.Width
InBlock.gif
InBlock.gif      
Dim c as Color = source.GetPixel(x,y)
InBlock.gif
InBlock.gif      
Dim luma as Integer = CInt(c.R*0.3 + c.G*0.59 + c.B*0.11)
InBlock.gif
InBlock.gif      bm.SetPixel(x,y,Color.FromArgb(luma,luma,luma)
InBlock.gif
InBlock.gif    
Next
InBlock.gif
InBlock.gif  
Next
InBlock.gif
InBlock.gif  
Return bm
InBlock.gif
ExpandedBlockEnd.gif
End Function


当然了这是一个好的方法,如果需要更简单的做到图像的色彩转换还可以使用ColorMatrix类,下一篇我们将介绍

[待续...]

GDI+ 彩色到黑白

彩色图转换为灰度图公式很简单:Y=0.3RED+0.59GREEN+0.11 Blue用GDI+实现的方式由两种:1. 直接用上述公式修改象素点2. 用ColorMatrix。下面是用ColorMat...
  • yuwenge
  • yuwenge
  • 2007年07月05日 14:28
  • 1065

彩色位图转成黑白位图

  • 2008年12月08日 10:48
  • 3.95MB
  • 下载

使用GDI+将24位真彩色图像转换为8位灰度图像

在图像处理中,我们经常需要将真彩色图像转换为黑白图像。严格的讲应该是灰度图,因为真正的黑白图像是二色,即只有纯黑,纯白二色。开始之前,我们先简单补充一下计算机中图像的表示原理。计算机中的图像大致可以分...
  • pcschoolchina
  • pcschoolchina
  • 2009年01月14日 16:11
  • 1332

BMP图像灰度化

#include #include #include #include #include #include /*int C24To8(char *Origin...
  • a785984
  • a785984
  • 2014年07月09日 18:20
  • 567

GDI+编程小结

GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负...
  • zang141588761
  • zang141588761
  • 2015年10月13日 09:13
  • 4946

GDI+编程说明及小结(叙述较为全面)

原文地址:http://blog.csdn.net/byxdaz/article/details/5972759
  • chenlycly
  • chenlycly
  • 2014年11月20日 19:09
  • 7902

FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)

FFMPEG中的swscale提供了视频原始数据(YUV420,YUV422,YUV444,RGB24...)之间的转换,分辨率变换等操作,使用起来十分方便,在这里记录一下它的用法。 swscale...
  • leixiaohua1020
  • leixiaohua1020
  • 2013年11月06日 15:37
  • 81691

如何将一个彩色图像转换成黑白图像

作者:未知彩色图像转换为黑白图像时需要计算图像中每像素有效的亮度值,通过匹配像素亮度值可以轻松转换为黑白图像。计算像素有效的亮度值可以使用下面的公式:Y=0.3RED+0.59GREEN+0.11Bl...
  • 21aspnet
  • 21aspnet
  • 2004年10月26日 18:51
  • 4527

如何将一个彩色图像转换成黑白图像

彩色图像转换为黑白图像时需要计算图像中每像素有效的亮度值,通过匹配像素        亮度值可以轻松转换为黑白图像。        计算像素有效的亮度值可以使用下面的公式:           ...
  • maji_lulu
  • maji_lulu
  • 2012年07月17日 14:23
  • 303

JAVA实现彩色图像转灰度

黑白图像只有黑白两种颜色,所以用灰度值0-255来表示黑白的比例。 在彩色图像中有RGB三种颜色的分量来表示颜色,当R=G=B时,就显示出灰色。 由RGB来求得灰度值的方法有好几种,可以取RGB的比例...
  • smtctc
  • smtctc
  • 2015年04月15日 20:56
  • 3542
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[GDI+]如何将一个彩色图像转换成黑白图像
举报原因:
原因补充:

(最多只允许输入30个字)