如何将图像裁剪成正方形

时间:2017-08-30 16:58:08

标签: c# asp.net image

您好我尝试将用户上传到我网站的图片剪裁成正方形。我已尝试在此网站上发布了一些解决方案,即http://stackoverflow.com/questions/5222711/image-resize-in-c-sharp-algorith-to-determine-resize-dimensions-height-and-wiWebImage Crop To Square。然而,虽然这些解决方案将图像转换为正方形,但它们在图像的顶部和底部添加了大面积的透明度,这不是我想要的,因为这些图像将用作轮廓图像。

2 个答案:

答案 0 :(得分:0)

要在不向顶部和底部添加大块透明度的情况下裁剪图像,您将不得不切掉部分边。在没有看到代码的情况下,它应该是沿着切断(宽度 - 高度)/每边2个像素的线条。

答案 1 :(得分:0)

这是我在网站上一直使用的代码:

 public Bitmap MakeSquarePhoto(Bitmap bmp, int size)
        {
            try
            {
                Bitmap res = new Bitmap(size, size);
                Graphics g = Graphics.FromImage(res);
                g.FillRectangle(new SolidBrush(Color.White), 0, 0, size, size);
                int t = 0, l = 0;
                if (bmp.Height > bmp.Width)
                    t = (bmp.Height - bmp.Width) / 2;
                else
                    l = (bmp.Width - bmp.Height) / 2;
                g.DrawImage(bmp, new Rectangle(0, 0, size, size), new Rectangle(l, t, bmp.Width - l * 2, bmp.Height - t * 2), GraphicsUnit.Pixel);
                return res;
            }
            catch { }
        }