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把经过处理后的图片显示出来。
/// <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把经过处理后的图片显示出来。
相关文章推荐
- Win8Metro(C#)数字图像处理--2.16图像浮雕效果
- C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果,滤波,图像截取) 对图片的处理 : 亮度调整 抓屏 翻转 随鼠标画矩形
- C# (GDI+相关) 图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果) (转)
- Win8 Metro(C#)数字图像处理--2.46图像RGB分量增强效果
- Win8 Metro(C#)数字图像处理--2.44图像油画效果算法
- C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)
- C#图像处理超酷效果
- C# (GDI+相关) 图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)
- Win8 Metro(C#)数字图像处理--2.45图像雾化效果算法
- C# 图像处理(二)—— 黑白效果
- Win8Metro(C#)数字图像处理--2.17图像木刻效果
- Win8 Metro(C#)数字图像处理--2.42图像光照效果算法
- 【图像处理】C#实现哈哈镜效果
- C# 常见图像处理效果
- 黄聪:C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果) (转)
- C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)
- C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)
- C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)
- Win8 Metro(C#)数字图像处理--2.61哈哈镜效果
- 黄聪:C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果) (转)