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