我有一个网站,其中一个功能可让用户上传图片,然后旋转/裁剪它们。我正在使用以下工具:
因此,假设用户想要首先裁剪图像,然后旋转它。裁剪从图像的左上角给出一组坐标,这些坐标形成格式为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.
答案 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
请注意,上面的width
和height
是新的宽度和高度。您可以分别替换旧 height
和width
。
为了解决这个问题,我所做的就是在一张纸上画一幅画。我标记了裁剪点,旋转它,并弄清楚它们是如何变化的。