2013-05-15 299 views
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旋转。

回答

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

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

+0

大声笑,虽然我得到了不同的结果,但我做了相同的纸张绘制。我会在早上用你的公式检查一下,看看我想出了什么。 – Scott

+0

这完全有可能是我误解了你正在尝试做的事情......但是如果你的方式行不通,那么给它一个镜头就不会有什么伤害=) – paddy

+0

这样做的伎俩,谢谢。 – Scott