清除图片周围的空白区域

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    class ImageUtil
    {
        public static void  ClearBlank(string sourceFileName,out int x,out int y,out int w,out int h)
        {
            using (var image = new Bitmap(sourceFileName))
            {
                //获取图像的BitmapData对像
                var data = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
                //循环处理
                var minW = 1000000;
                var maxW = 0;
                var minH = 1000000;
                var maxH = 0;

                unsafe
                {
                    byte* ptr = (byte*)(data.Scan0.ToPointer());
                    for (var i = 0; i < data.Height; i++)
                    {
                        for (var j = 0; j < data.Width; j++)
                        {
                            var a = Convert.ToInt32(ptr[0].ToString());
                            var b = Convert.ToInt32(ptr[1].ToString());
                            var c = Convert.ToInt32(ptr[2].ToString());

                            if (a < 150 && b < 150 && c < 150)
                            {
                                if ((j + 1) > maxW)
                                {
                                    maxW = j + 1;
                                }
                                if ((i + 1) > maxH)
                                {
                                    maxH = i + 1;
                                }

                                if ((j + 1) < minW)
                                {
                                    minW = j + 1;
                                }
                                if ((i + 1) < minH)
                                {
                                    minH = i + 1;
                                }
                            }
                            ptr += 3;
                        }
                        ptr += data.Stride - data.Width * 3;
                    }
                }
                x = minW;
                y = minH;
                w = maxW - minW;
                h = maxH - minH;
            }
        } } }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值