您的位置:首页 > 编程语言 > C#

C# 图像处理(四)—— 滤色效果

2012-07-11 00:19 218 查看
其实如果有看过之前写的把图片黑白化、和把图片反色化的话,对于一些简单的图像处理是可以做得得心应手的,因为那些只是先获取坐标的像素值,再对这些值进行处理而已。然而现在说的滤色效果也是大同小异的。实现滤色效果的函数如下,

/// <summary>
/// 将图片进行滤色处理
/// </summary>
/// <param name="mybm">原始图片</param>
/// <param name="width">原始图片的长度</param>
/// <param name="height">原始图片的高度</param>
/// <returns>已被滤色处理后的图片</returns>
public Bitmap FilPic(Bitmap mybm, int width, int height)
{
Bitmap bm = new Bitmap(width, height);//初始化一个记录滤色效果的图片对象
int x, y;//循环次数
Color pixel;

for (x = 0; x < width; x++)
{
for (y = 0; y < height; y++)
{
pixel = mybm.GetPixel(x, y);//获取当前坐标的像素值
bm.SetPixel(x, y, Color.FromArgb(0, pixel.G, pixel.B));//绘图
}

}

return bm;//返回滤色处理后的图片

}

这里只是实现滤去红色的滤色效果,不知道大家有没有注意到,其实在绘图处理那里只是改了一个参数的值而已。SetPixel(x, y, Color.FromArgb(pixel.R, pixel.G, pixel.B))中的Color.FromArgb(pixel.R, pixel.G, pixel.B)里面的三个参数,其实分别是红色的值、绿色的值和蓝色的值,滤色的原理就是把想要滤要的颜色的值赋值为0,像上面那个例子里面,就是滤去图片的红色值,因为我把Color.FromArgb(pixel.R, pixel.G, pixel.B)里面的pixel.R的值直接赋为0了,其它两个值不变,那就可以实现滤红的效果了,当然,也可以做成滤绿、滤蓝、滤红绿两色等效果,甚至可以滤去所有的颜色,可是滤去所有的颜色就把整幅图片弄成黑色了,那做出来这个效果又有什么用呢?

在我的程序里,我做成的效果是根据用户的要求来滤色的,所以以上的函数不是我程序里面的源代码,是少了一个int变量的。最后就是利用pictureBox把经过处理后的图片显示出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐