C# 去除图片白边

        /// <summary>
        /// 裁剪图片(去掉百边)
        /// </summary>
        /// <param name="FilePath">图片路径</param>
        public void RemoveWhiteEdge(string FilePath)
        {
            Bitmap bmp = new Bitmap(FilePath);
            //上左右下
            int top = 0, left = 0, right = bmp.Width, bottom = bmp.Height;

            //寻找最上面的标线,从左(0)到右,从上(0)到下
            for (int i = 0; i < bmp.Height; i++)//行
            {
                bool find = false;
                for (int j = 0; j < bmp.Width; j++)//列
                {
                    Color c = bmp.GetPixel(j, i);
                    if (!IsWhite(c))
                    {
                        top = i;
                        find = true;
                        break;
                    }
                }
                if (find)
                    break;
            }
            //寻找最左边的标线,从上(top位)到下,从左到右
            for (int i = 0; i < bmp.Width; i++)//列
            {
                bool find = false;
                for (int j = top; j < bmp.Height; j++)//行
                {
                    Color c = bmp.GetPixel(i, j);
                    if (!IsWhite(c))
                    {
                        left = i;
                        find = true;
                        break;
                    }
                }
                if (find)
                    break;
            }
            //寻找最下边标线,从下到上,从左到右
            for (int i = bmp.Height - 1; i >= 0; i--)//行
            {
                bool find = false;
                for (int j = left; j < bmp.Width; j++)//列
                {
                    Color c = bmp.GetPixel(j, i);
                    if (!IsWhite(c))
                    {
                        bottom = i;
                        find = true;
                        break;
                    }
                }
                if (find)
                    break;
            }
            //寻找最右边的标线,从上到下,从右往左
            for (int i = bmp.Width - 1; i >= 0; i--)//列
            {
                bool find = false;
                for (int j = 0; j <= bottom; j++)//行
                {
                    Color c = bmp.GetPixel(i, j);
                    if (!IsWhite(c))
                    {
                        right = i;
                        find = true;
                        break;
                    }
                }
                if (find)
                    break;
            }

            //克隆位图对象的一部分。
            Rectangle cloneRect = new Rectangle(left, top, right - left, bottom - top);
            Bitmap cloneBitmap = bmp.Clone(cloneRect, bmp.PixelFormat);            
            cloneBitmap.Save(@"D:/service/123.png", ImageFormat.Png);
            bmp.Dispose();           
        }

        /// <summary>
        /// 判断是否白色和纯透明色(10点的容差)
        /// </summary>
        public static bool IsWhite(Color c)
        {
            //纯透明也是白色,RGB都为255为纯白
            if (c.A < 10 || (c.R > 245 && c.G > 245 && c.B > 245))
                return true;

            return false;
        }

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C是“计算机”的简称,它是一种能够根据指令进行自动化操作和数据处理的机器。计算机的发明和普及改变了人类社会的方方面面,带来了巨大的影响和变革。 首先,计算机的出现大大提高了数据的处理速度和准确性。与人类相比,计算机能够迅速完成大量的计算和处理任务,避免了人为错误和繁琐的手工操作。这使得各个领域的工作效率得以大幅提升,例如科学研究、商业运营、制造业等。 其次,计算机的网络连接性使得信息交流和共享变得更加便捷。互联网的普及使得人们可以通过计算机与世界各地的人进行快速的沟通和交流。信息无论是文字、图片还是音频视频,都可以在计算机网络上快速、安全地传输。这使得知识的获取和传播更加广泛和便利,推动了人际交往和文化交流。 另外,计算机的广泛应用也改变了许多行业的工作方式和经营模式。例如,电子商务的兴起使得人们可以通过互联网直接购买所需的商品和服务,不再局限于实体商店。在医疗领域,计算机辅助诊断系统能够帮助医生更精准地诊断疾病和制定治疗方案。在交通运输领域,计算机的自动控制技术使得车辆的行驶更加安全和高效。 总的来说,计算机的发展和应用深刻地改变了人类社会的方方面面。它带来了巨大的便利和效率提升,推动了科技进步和社会发展。随着技术的不断创新和进步,计算机的影响将会越来越深远,为人类带来更多的机遇和挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值