【问题标题】:Get new crop coordinates after rotating a cropped image旋转裁剪图像后获取新的裁剪坐标
【发布时间】:2013-05-10 16:59:15
【问题描述】:

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

假设用户想要先裁剪图像,然后旋转它。裁剪给出了一组从图像左上角开始的坐标,这些坐标形成了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,如果你想翻转它。

【问题讨论】:

    标签: c# rotation crop image-manipulation jcrop


    【解决方案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 的宽度和高度。您可以分别替换 old heightwidth

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

    【讨论】:

    • 大声笑,虽然我得到了不同的结果,但我实际上做了同样的纸画。早上我会用你的公式仔细检查一下,看看我想出了什么。
    • 完全有可能我误解了你的意图......但如果你的方法不起作用,那么试一试也无妨=)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2015-08-18
    相关资源
    最近更新 更多