Php Gd旋转图像

时间:2009-04-23 09:39:21

标签: php gd

您好,

我正在尝试围绕中心旋转圆形图像,然后切掉两侧。我看到了imagerotate函数,但它似乎没有围绕中心旋转。

有人有任何建议吗?

谢谢。

更新:因为它是一个圆圈,我想切掉边缘并保持我的圆圈尺寸相同。

3 个答案:

答案 0 :(得分:4)

我使用以下代码成功解决了这个问题

    $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

希望它有所帮助。

再见

答案 1 :(得分:3)

documentation表示 围绕中心旋转。

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

您可以(相对容易地)计算缩小比例,然后事先适当地预先缩放图像。

如果你有PHP“ImageMagick”函数available,你可以使用它们 - 它们显然不会缩放图像。

答案 2 :(得分:0)

根据PHP手册imagerotate()页面:

  

旋转中心是中心   的图像,旋转的图像是   按比例缩小使整个旋转   图像适合目标图像 -   边缘没有被修剪。

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