Дуга рисует с недостатками

Это мой 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 


Пока все хорошо... Теперь, кто-то знает, почему я вижу эти недостатки на изображении.

1 ответ

Решение

Комментарии в документации для imagesetthickness кажется, подразумевают, что эллипсы и дуги не очень хорошо работают с настройками толщины. Является ли это ошибка или особенность спорны. Несмотря на это, предлагаемый обходной путь использует небольшую толщину и многократно рисует форму все больше и больше.

В вашем случае это будет выглядеть примерно так:

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

Который генерирует следующее изображение: введите описание изображения здесь
Вам, вероятно, нужно будет немного скорректировать результаты, но этого должно быть достаточно, чтобы начать работу по правильному пути.

Другие вопросы по тегам