Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 旋转图像*而不*调整其大小_Php - Fatal编程技术网

Php 旋转图像*而不*调整其大小

Php 旋转图像*而不*调整其大小,php,Php,我希望旋转图像(使用用户定义的旋转角度),但不使图像变小 是已经发生的事情,将着色区域保存为较小的图像 是我想要的,虚线是新的图像大小 服务器具有PHP5.3+。链接、代码和解释都非常受欢迎。这不是完整的答案,但我会将四个角作为坐标,按您的角度旋转它们,然后根据新坐标的范围计算新的边界框。 (假设原点位于左下角的坐标) 这可能是一种方法。计算对角线宽度 PHP有一个平方根函数: 通过这种方式,您应该具有可以应用于变换图像的对角线宽度。有许多解决方案,包括三角公式,但这个库似乎是一条捷径 示

我希望旋转图像(使用用户定义的旋转角度),但不使图像变小

  • 是已经发生的事情,将着色区域保存为较小的图像
  • 是我想要的,虚线是新的图像大小

  • 服务器具有PHP5.3+。链接、代码和解释都非常受欢迎。

    这不是完整的答案,但我会将四个角作为坐标,按您的角度旋转它们,然后根据新坐标的范围计算新的边界框。 (假设原点位于左下角的坐标)


    这可能是一种方法。计算对角线宽度

    PHP有一个平方根函数:
    通过这种方式,您应该具有可以应用于变换图像的对角线宽度。

    有许多解决方案,包括三角公式,但这个库似乎是一条捷径


    示例:

    了解如何旋转图像会有所帮助。查看并签出
    imagerotateeeequivalent()
    函数。我认为这样的东西可以用来实现这样的目标。看起来你“用谷歌搜索了很多”,但没有想到去查看
    imagerotate
    手册页面上的评论。
    corners = rotate_each ( [(left,top) (left,bottom), (right,top), (right,bottom)], angle)
    new_bb_left = min([corners[0].x, corners[1].x, corners[2].x, corners[3].x])
    new_bb_right = max([corners[0].x, corners[1].x, corners[2].x, corners[3].x])
    new_bb_bottom = min([corners[0].y, corners[1].y, corners[2].y, corners[3].y])
    new_bb_top = max([corners[0].y, corners[1].y, corners[2].y, corners[3].y])