Это мой 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
Пока все хорошо … Теперь, кто-нибудь знает, почему я вижу эти недостатки на изображении.
комментарии в документации за 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);
Который генерирует следующее изображение:
Вероятно, вам нужно будет немного скорректировать результаты, но этого должно быть достаточно, чтобы начать работу по правильному пути.
Других решений пока нет …