• .net图片自动裁剪白边函数案例


    1.项目要求上传白底的图片要进行裁剪白边,于是同事谢了个函数感觉很好用。

    2.

      #region 剪切白边
            /// <summary>
            /// 剪切白边
            /// </summary>
            /// <param name="p"></param>
            /// <returns></returns>
            public static Image Crop(Image p)
            { 
                int x, y ;//for use of X,Y Coordinates of pixels
                Bitmap b = new Bitmap(p); //image needed to crop
                Color c = new Color(); //pixel color for use of identifying if background
                int intLeft=0;//furthest left X coordinate
                int intRight=0;//furthest right X coordinate
                int intBottom =0;//furthest to the bottom Y coordinate
                int intTop =0;
                y = 0;
                while(y < b.Height) 
                {
                    x = 0;
                    while (x < b.Width) //loop through pixels on X axis until end of image width
                    {
                        c = b.GetPixel(x, y); //Get the color of the pixel
                        if (c.R != 255&&c.R!=0 && c.G != 255&&c.G!=0 && c.B != 255&&c.B!=0)
                        {
                            if (c.R < 240 || c.G < 240 || c.B < 240)
                            {
                                //Determine if pixel is further left than the value we already have
                                if (intLeft == 0 || intLeft > x )
                                {
                                    intLeft = x;
                                }
                                //Determine if pixel is further to the top than the value we already have
                                if (intTop == 0 || intTop > y )
                                {
                                    intTop = y;
                                }
                                //Determine if pixel is further right than the value we already have
                                if (intRight <= b.Width && intRight < x )
                                {
                                    intRight = x;
                                }
                                //Determine if pixel is further to the bottom than the value we already have
                                if (intBottom <= b.Height && intBottom < y )
                                {
                                    intBottom = y;
                                }
                            }
                        }
                        x += 1;
                    }
                    y += 1;
                }
                int intNewWidth = intRight; //Establish width of new cropped image
                int intNewHeight = intBottom; //Establish height of new cropped image
                Bitmap imgCropped =new Bitmap(intNewWidth - intLeft + 2, intNewHeight - intTop + 2);
                Graphics objGraphics = Graphics.FromImage(imgCropped);
                //set the background color to white (you can choose what you like
                objGraphics.Clear(System.Drawing.Color.Transparent);
                int intStartTop = 1 - intTop; /// 40 + 5
                int intStartLeft = 1 - intLeft; /// 40 + 5
                //Draw the original image to your new cropped sized image
                objGraphics.DrawImage(b, intStartLeft, intStartTop);
                b.Dispose();
                objGraphics.Dispose();
                //return the Cropped image to the caller
                return imgCropped;
            }
  • 相关阅读:
    ThinkPhp学习11
    ThinkPhp学习10
    1.自我介绍
    Axure高级教程--在原型中插入视频
    Axure制作iphone手机交互模型—覆盖切换
    对产品的一些总结
    详解Axure的Masters功能
    详解使用Axure 制作Tab切换功能
    产品经理的初识
    作为产品经理--如何写好PRD文档
  • 原文地址:https://www.cnblogs.com/guozefeng/p/4178250.html
Copyright © 2020-2023  润新知