Как нарисовать этот тип изображения в PHP - PullRequest
1 голос
/ 01 сентября 2010

Я хочу нарисовать изображение в PHP, которое выглядит как круг на следующем рисунке -

image


Как мне поступить с этим? Есть ли какой-нибудь доступный плагин PHP или что-то, что я могу использовать для создания этого типа изображения, или я должен использовать библиотеку GD и вручную написать код?

EDIT Я ищу библиотеку с открытым исходным кодом.

Ответы [ 6 ]

6 голосов
/ 01 сентября 2010

Не пишите вручную, так как это было бы очень больно. Мне когда-то приходилось кодировать генератор круговой диаграммы.

Существует множество графических движков:

  1. JpGraph
  2. GraPHPite
  3. Инструменты Google Chart

Посмотрите, что они вам предлагают. Может быть не то же самое, но что-то очень близкое.

4 голосов
/ 01 сентября 2010

Я не знаю, что вы пытаетесь отобразить на этом изображении, но это похоже на какой-то график, поэтому я бы искал библиотеку диаграмм, например, JpGraph, прежде чем снова ее кодировать:

http://jpgraph.net/

2 голосов
/ 04 сентября 2010

Это:

$im = imagecreatetruecolor(500, 500);
imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255));


imagefilledarc($im, 250, 250, 500, 500, -90, -80, 0xFF0000, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 400, 400, -80, -40, 0xFFFF00, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 150, 150, -40,  0,  0xFF00FF, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 450, 450,   0,  20, 0x00FFFF, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 350, 350,  20, 50,  0x1276A9, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 100, 100,  50, 95,  0x000000, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 400, 400,  95, 125, 0x1E1FFF, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 150, 150, 125, 160, 0x45ABAB, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 500, 500, 160, 180, 0xFFA7F1, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 300, 300, 180, 235, 0xA91234, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 240, 240, 235, 255, 0xA13ACE, IMG_ARC_PIE);
imagefilledarc($im, 250, 250, 300, 300, 255, 270, 0x00FF00, IMG_ARC_PIE);

header("Content-type: image/png");
imagepng($im);

Делает это:

Image does not exist

2 голосов
/ 01 сентября 2010

Это похоже на гистограмму, преобразованную в полярные координаты.

Вот простой способ создать такую ​​картинку:

  • Нарисуйте свои бары (либо используя диаграммубиблиотека или самостоятельно) без каких-либо промежутков между решетками.Убедитесь, что слева и справа от ваших столбцов нет пробелов.

  • Преобразуйте изображение в полярные координаты, используя функцию gdImageSquareToCircle() GD

Возможно, вам придется повернуть ваши столбики на 180 ° (то есть столбцы должны расти сверху вниз) перед преобразованием изображения.

1 голос
/ 02 сентября 2010

imagefilledarc ваш друг!

1 голос
/ 01 сентября 2010

вы, вероятно, ищете библиотеку SVG.

Рафаэль также хороший выбор

...