【问题标题】:Arc draw with imperfections有缺陷的圆弧绘制
【发布时间】:2016-10-24 17:54:00
【问题描述】:

这是我的 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 


到目前为止,一切都很好......现在,有人知道为什么我会在图像中看到这些缺陷。

【问题讨论】:

    标签: php gd libpng


    【解决方案1】:

    imagesetthicknesscomments in the documentation 似乎暗示椭圆和圆弧不适合厚度设置。这是否是错误或功能是有争议的。无论如何,建议的解决方法是使用较小的厚度并反复绘制越来越大的形状。

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

    <?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);
    

    生成如下图片:
    您可能需要稍微调整一下结果,但这应该足以让您走上正确的道路。

    【讨论】:

    • 做了同样的事情,只是将厚度设置为 2。这成功了。谢谢。顺便说一句,关于它是否是一个错误,我会这么说...如果它可以与 arc 一起使用,那么它也应该按预期运行!... =)
    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多