【发布时间】:2015-10-23 16:35:28
【问题描述】:
你好,
我正在尝试围绕中心旋转一个圆形图像,然后切断两侧。我看到了 imagerotate 函数,但它似乎没有围绕中心旋转。
大家有什么建议吗?
谢谢。
更新:由于它是一个圆,我想剪掉边缘并保持我的圆在相同的尺寸。
【问题讨论】:
-
顺便说一句,PHP 最近发布了一个更新,修复了 GD imagerotate 的一个安全漏洞......只是觉得这是一个有趣的花絮。
你好,
我正在尝试围绕中心旋转一个圆形图像,然后切断两侧。我看到了 imagerotate 函数,但它似乎没有围绕中心旋转。
大家有什么建议吗?
谢谢。
更新:由于它是一个圆,我想剪掉边缘并保持我的圆在相同的尺寸。
【问题讨论】:
documentation 表示它确实围绕中心旋转。
不幸的是,它还说它会缩放图像以使其仍然适合。这意味着无论你做什么,这个函数都会改变你内部圆形图像的大小。
您可以(相对容易地)计算缩小多少,然后预先适当地放大图像。
如果你有 PHP "ImageMagick" 函数 available 你可以使用它们——它们显然不会缩放图像。
【讨论】:
我用下面的代码成功解决了这个问题
$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
希望对你有帮助。
再见
【讨论】:
【讨论】: