旋转图像,裁剪出黑色边框并保持原始比例C#

时间:2016-07-28 17:33:24

标签: c# image rotation crop

我的问题与already asked question非常相似,但在C#中 我已经在空白区域的边界框中旋转了图像,但现在我需要将其裁剪并保持原始比例。

这是我想要的结果: Desired result

这就是我现在所拥有的

    public Bitmap RotateImage(Bitmap b, float angle)
    {
        if (angle > 0)
        {
            int l = b.Width;
            int h = b.Height;
            double an = angle * Math.PI / 180;
            double cos = Math.Abs(Math.Cos(an));
            double sin = Math.Abs(Math.Sin(an));
            int nl = (int)(l * cos + h * sin);
            int nh = (int)(l * sin + h * cos);
            Bitmap returnBitmap = new Bitmap(nl, nh);

            Graphics g = Graphics.FromImage(returnBitmap);
            g.TranslateTransform((float)(nl - l) / 2, (float)(nh - h) / 2);
            g.TranslateTransform((float)b.Width / 2, (float)b.Height / 2);
            g.RotateTransform(angle);
            g.TranslateTransform(-(float)b.Width / 2, -(float)b.Height / 2);
            g.DrawImage(b, new Point(0, 0));
            return returnBitmap;
        }
        else return b;
    }

0 个答案:

没有答案