zoukankan      html  css  js  c++  java
  • C# 图像处理(四)—— 滤色效果

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

        /// <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把经过处理后的图片显示出来。

  • 相关阅读:
    树状数组基本操作
    P1802 5倍经验日 题解
    函数学习总结
    康托展开
    中国电信CDMA无线上网卡短信收发
    报错:无法获取实体类XXX对应的表名!
    javajvisualvm远程监控云服务器上的Tomcat8.5
    服务器防火墙开放端口
    报错:列"AGENT_ENTITY_NAME"的值太大(实际值: 60,最大值50) oracle VARCHAR2和NVARCHAR2的区别
    linux中查看端口是否被占用lsof i:port
  • 原文地址:https://www.cnblogs.com/luluping/p/2585554.html
Copyright © 2011-2022 走看看