旋转裁剪的图像后获取新的裁剪坐标

时间:2013-05-15 23:26:32

标签: c# rotation crop image-manipulation jcrop

我有一个网站,其中一个功能可让用户上传图片,然后旋转/裁剪它们。我正在使用以下工具:

因此,假设用户想要首先裁剪图像,然后旋转它。裁剪从图像的左上角给出一组坐标,这些坐标形成格式为x1,y1,x2,y2的矩形。我将其作为字符串存储在数据库字段中,然后将其附加到我对ImageResizer的调用中,如下所示:

http://www.url.com/assets/image.jpg?crop=x1,y1,x2,y2

但是,如果用户想要在裁剪后旋转图像,则这些坐标不再适用。我想做的是将我的坐标字符串分成一个整数数组,该数组按顺序包含x1,y1,x2,y2。

我的问题是:是否有一个数学公式可以应用于基于90或-90度旋转的值,这些值会在旋转后给出正确的坐标值?

我只允许以90度为增量旋转,一次只能旋转一次 - 所以从0到90,如果你想翻转,则再从90增加到180.

1 个答案:

答案 0 :(得分:1)

如果顺时针旋转,您的裁剪坐标会改变如下:

x1   <-  width - old_y2 - 1
x2   <-  width - old_y1 - 1
y1   <-  old_x1
y2   <-  old_x2

如果逆时针旋转,您的裁剪坐标会改变如下:

x1   <-  old_y1
x2   <-  old_y2
y1   <-  height - old_x2 - 1
y2   <-  height - old_x1 - 1

请注意,上面的widthheight的宽度和高度。您可以分别替换 heightwidth

为了解决这个问题,我所做的就是在一张纸上画一幅画。我标记了裁剪点,旋转它,并弄清楚它们是如何变化的。

相关问题