Php 旋转图像

Php 旋转图像,php,gd,Php,Gd,你好, 我试图围绕中心旋转一个圆形图像,然后切掉侧面。我看到imagerotate函数,但它似乎没有围绕中心旋转 有人有什么建议吗 多谢各位 更新:因为它是一个圆,所以我想切掉边并保持圆的尺寸不变。根据PHP手册页面: 旋转的中心就是中心 旋转后的图像 按比例缩小,以便整体旋转 图像适合于目标图像- 边缘没有修剪 也许图像的可见中心不是实际中心?表示它确实围绕中心旋转 不幸的是,它还说,它将缩放图像,使其仍然适合。这意味着无论你做什么,这个函数都会改变你内部圆形图像的大小 您可以(相对容易地)计

你好,

我试图围绕中心旋转一个圆形图像,然后切掉侧面。我看到imagerotate函数,但它似乎没有围绕中心旋转

有人有什么建议吗

多谢各位


更新:因为它是一个圆,所以我想切掉边并保持圆的尺寸不变。

根据PHP手册页面:

旋转的中心就是中心 旋转后的图像 按比例缩小,以便整体旋转 图像适合于目标图像- 边缘没有修剪

也许图像的可见中心不是实际中心?

表示它确实围绕中心旋转

不幸的是,它还说,它将缩放图像,使其仍然适合。这意味着无论你做什么,这个函数都会改变你内部圆形图像的大小

您可以(相对容易地)计算将发生多少缩放,然后预先适当地对图像进行预缩放


如果您有PHP“ImageMagick”函数,您可以使用它们,因为它们显然不会缩放图像

    $width_before = imagesx($img1);
    $height_before = imagesy($img1);
    $img1 = imagerotate($img1, $angle, $mycolor);

    //but imagerotate scales, so we clip to the original size

    $img2 = @imagecreatetruecolor($width_before, $height_before);
    $new_width = imagesx($img1); // whese dimensions are
    $new_height = imagesy($img1);// the scaled ones (by imagerotate)
    imagecopyresampled(
        $img2, $img1,
        0, 0,
        ($new_width-$width_before)/2,
        ($new_height-$height_before)/2,
        $width_before,
        $height_before,
        $width_before,
        $height_before
    );
    $img1 = $img2;
    // now img1 is center rotated and maintains original size
希望能有帮助


再见

先调整大小,然后旋转,应该可以得到质量更好的图像。的确-是的。GD图像旋转将始终是缩小的,因此最好先放大。将编辑以修复。正如随机附带说明,PHP最近发布了一个更新,修复了GD imagerotate的一个安全漏洞。。。我只是觉得这是个有趣的消息。