弧形绘制有缺陷

时间:2016-06-22 16:45:03

标签: php gd libpng

这是我的php文件( arc.php ),应该会产生一个粗半弧:

<?php
$img = imagecreatetruecolor(2000, 1000);    
$white = imagecolorallocate($img, 255, 255, 255);
imagesetthickness($img, 200);
imagearc($img, 1000, 1000, 1900, 1900,  180, 360, $white);
imagepng($img);
imagedestroy($img);


图像是通过cli生成的:

php arc.php > arc.png 


到目前为止,这么好......现在,有人知道为什么我会在图像中得到那些不完美之处。

enter image description here

1 个答案:

答案 0 :(得分:2)

imagesetthickness的{​​{3}}似乎暗示椭圆和圆弧在厚度设置方面效果不佳。无论这是一个错误还是一个功能都是有争议的。无论如何,建议的解决方法是使用较小的厚度并重复绘制越来越大的形状。

在您的情况下,它看起来像:

<?php
$img = imagecreatetruecolor(2000, 1000);
$white = imagecolorallocate($img, 255, 255, 255);

// Slightly thicker than 1 pixel to compensate pixel aliasing
imagesetthickness($img, 2);

$thickness = 200;
for ($i = $thickness; $i > 0; $i--) {
    imagearc($img, 1000, 1000, 1900 - $i, 1900 - $i,  180, 360, $white);
}

imagepng($img);
imagedestroy($img);

生成以下图像:comments in the documentation
您可能需要稍微调整一下结果,但这应该足以让您从正确的路径开始。