0

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

所以假设用户想先裁剪图像,然后旋转它。裁剪从图像的左上角给出一组坐标,这些坐标形成格式中的矩形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。

4

1 回答 1

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

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

于 2013-05-15T23:53:26.443 回答