Рисование пирогов с помощью PHP ImageMagick
-
20-08-2019 - |
Вопрос
Есть ли способ получить функцию GD imagefilledarc()
's результат использования PHP ImageMagick?Я осмотрелся, но пока не нашел удовлетворительного решения.Я хочу, чтобы он поддерживал прозрачность и использовал его для рисования пирогов.
Решение 4
Поскольку этот пост время от времени попадает в руки гуглеров и на него нет достоверного ответа, я решил дать несколько подсказок.Есть отличная библиотека Imagine(https://github.com/avalanche123/Представьте себе), который поддерживает самые популярные библиотеки изображений PHP (ImageMagick, GraphicsMagick и GD), используя одни и те же вызовы.
Его API включает функцию pieSlice (https://imagine.readthedocs.io/en/stable/_static/API/Imagine/Draw/DrawerInterface.html#method_pieSlice).Источником этой функции является https://github.com/avalanche123/Imagine/blob/develop/src/Imagick/Drawer.php#L242
Другие советы
Лучше всего использовать ImageMagick::Draw.У него есть команда дуги;вместо указания центра вы указываете ограничивающий прямоугольник.Вам просто нужно до него добавить команду для установки заливки и возможно после нее для закрытия заливки.
Насколько я знаю, ImagickDraw::arc — единственный способ сделать это (если только вы не хотите создать функцию, которая рисует его пиксель за пикселем).Но чтобы он работал так же, как gd, вам просто нужно внести небольшие изменения.Например, это:
imagearc($image, $cx, $cy, $width, $height, $start, $end, $color);
Должно быть эквивалентно этому (я не проверял):
ImagickDraw::setStrokeColor($imageMagickColor); //I don't remember how to allocate the color
ImagickDraw::arc($cx-$width/2, $cy-$height/2, $cx+$width/2, $cy+$height/2, $start, $end);
Не совсем то, о чем вы спрашивали, но с помощью Google Chart API легко рисовать круговые диаграммы. http://code.google.com/apis/chart/