首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#多媒体编程

使用C#处理数字图像

减小字体 增大字体 作者:不详  来源:转载  发布时间:2010-12-15 09:17:46

该函数实现的程序效果如下:

数字图像处理

(处理前)

数字图像处理

(处理后)

Brightness()函数的算法如下:

public static bool Brightness(Bitmap b, int nBrightness)

{

if (nBrightness < -255 || nBrightness > 255)

return false;

BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width,

b.Height), ImageLockMode.ReadWrite,

PixelFormat.Format24bppRgb);

int stride = bmData.Stride;

System.IntPtr Scan0 = bmData.Scan0;

int nVal = 0;

unsafe

{

byte * p = (byte *)(void *)Scan0;

int nOffset = stride - b.Width*3;

int nWidth = b.Width * 3;

for(int y=0;y
{

for(int x=0; x < nWidth; ++x )

{

nVal = (int) (p[0] + nBrightness);

if (nVal < 0) nVal = 0;

if (nVal > 255) nVal = 255;

p[0] = (byte)nVal;

++p;

}

p += nOffset;

}

}

b.UnlockBits(bmData);

return true;

}

本函数完成的功能是对图像进行增亮处理,它比上面两个函数多了一个增亮参数-nBrightness,该参数由用户输入,范围为-255~255。在取得了增亮参数后,函数的unsafe代码部分对每个象素点的不同颜色成分进行逐个处理,即在原来值的基础上加上一个增亮参数以获得新的值。同时代码中还有一个防止成分值越界的操作,因为RGB成分值的范围为0~255,一旦超过了这个范围就要重新设置。函数最后执行成功后,同样得返回true值。

该函数实现的程序效果如下:

数字图像处理


首先,我们把图像增亮的参数设置为100(其范围为-255~255),然后执行效果如下,读者也可尝试其他的参数值。

数字图像处理

(处理前)

数字图像处理

(处理后)

三.小结:

  本文通过一个简单的实例向大家展现了用Visual C#以及GDI+完成数字图像处理的基本方法,通过实例,我们不难发现合理运用新技术不仅可以大大简化我们的编程工作,还可以提高编程的效率。不过我们在运用新技术的同时也得明白掌握基本的编程思想才是最主要的,不同的语言、不同的机制只是实现的具体方式不同而已,其内在的思想还是相通的。对于上面的例子,掌握了编写图像处理函数的算法,用其他的方式实现也应该是可行的。同时,在上面的基础上,读者不妨试着举一反三,编写出更多的图像处理的函数来,以充实并完善这个简单的实例。


本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

上一页  [1] [2] [3] 

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.