有没有办法在使用 PHP ImageMagick时获得 GD 函数imagefilledarc()
的结果?我环顾四周,但到目前为止还没有找到令人满意的解决方案。我希望它支持透明度,并用它来绘制馅饼。
4 回答
你最好的选择是使用 ImageMagick::Draw。它有一个弧命令;您无需指定中心,而是指定边界矩形。您只需要在它之前添加一个命令来设置填充,也许在它之后添加一个命令来关闭填充。
据我所知, ImagickDraw::arc 是唯一的方法(除非你想创建一个逐像素绘制它的函数)。但是要让它像 gd 一样工作,你只需要做一些小的改动。例如,这个:
imagearc($image, $cx, $cy, $width, $height, $start, $end, $color);
应该相当于这个(我没有测试过):
ImagickDraw::setStrokeColor($imageMagickColor); //I don't remember how to allocate the color
ImagickDraw::arc($cx-$width/2, $cy-$height/2, $cx+$width/2, $cy+$height/2, $start, $end);
由于这篇文章时不时地受到谷歌人的攻击,并且没有有效的答案,我想我应该给出一些提示。有一个名为 Imagine ( https://github.com/avalanche123/Imagine ) 的优秀库,它使用相同的调用支持最流行的 PHP 图像库(ImageMagick、GraphicsMagick 和 GD)。
它的 API 包含一个 pieSlice 函数(https://imagine.readthedocs.io/en/stable/_static/API/Imagine/Draw/DrawerInterface.html#method_pieSlice)。该函数的来源是https://github.com/avalanche123/Imagine/blob/develop/src/Imagick/Drawer.php#L242