Журнал Системный Администратор, Январь 2005

Журнал Системный Администратор

Январь 2005

Цена: $4.5 US

  Подписаться

Зарегистриванные пользователи, пожалуйста следуйте этой ссылке


JpGraph Динамическая графика – это просто

Динамическая графика – это просто

Кирилл Сухов

Ещё каких-то лет пять назад человек, занимающийся разработкой сайтов, мог гордо именовать себя веб-мастером, не вызывая при этом иронических усмешек у коллег. В это понятие входили дизайн, вёрстка, веб-программирование, и в объявлениях о приёме на работу часто мирно уживались требования по знанию Perl и Photoshop. Теперь, разумеется, многое изменилось, и в резюме веб-программиста считается дурным тоном упоминать навыки работы с графическими пакетами, даже если таковые и присутствуют. Тем не менее если вы работаете в небольшом проекте, в бюджете которого не предусмотрен многочисленный штат сотрудников, то время от времени у вас может возникнуть необходимость в самостоятельном создании кое-какой графики – кнопочек, маркеров, пиктограмм, фоновых изображений, которые нужны для любого веб-интерфейса. В общем случае такие задачи решаются использованием готовой библиотеки изображений или приглашением знакомого дизайнера (как правило, за солидный гонорар – две, а то и три бутылки пива). Проблема, решение которой изложено ниже, не так стандартна и немного сложнее, хотя встречается не так уж редко.

Итак, представим, что вы разрабатываете/ведёте биллинг, или складскую систему, или… в общем, приложение, использующее базу данных и несущее достаточно сложную логику. Представим также (хотя это и сложнее), что никаких особых проблем у вас нет – приложение работает корректно, новая функциональность добавляется относительно легко, небольшие корректировки много времени не отнимают. В целом вы довольны, но кроме вас в офисе трудятся менеджеры, бухгалтеры, начальство, и вот у последнего возникают довольно своеобразные требования. В частности, шефа не устраивают ваши отчёты, генерирующиеся в виде аккуратных HTML-таблиц, ему нужны графики, причём графики красивые и ежедневно (ежечасно?!) обновляющиеся. Не рисовать же их руками?

К счастью, PHP-разработчик может воспользоваться таким мощным инструментом, как графическая библиотека GD, включаемая по умолчанию в дистрибутив, начиная с версии 4.0.1. Возможность попиксельной прорисовки и обработки изображения, манипуляции с размером картинки и текстом, наличие примитивов позволяют генерировать достаточно сложную графику. Проблема заключается в том, что на построение качественного графика или диаграммы уйдет довольно много времени, а наша задача в данном случае – справиться с поручением в сжатые сроки и с минимальным количеством кода. Существует некоторое количество готовых библиотек для разработки графиков, например, автор этих строк в своё время использовал довольно удачную разработку – phplot (http://www.phplot.com), но безусловным лидером в этом отношении является объектно-ориентированная библиотека JpGraph.

Среди её преимуществ можно выделить возможность построения множества видов графиков, неограниченного числа графиков одного типа в одном изображении, сглаживание линий, заполнение фонов диаграмм и гистограмм градиентной заливкой, генерация карт-изображений и кэширование рисунков. Стандартная версия библиотеки бесплатна (существует и коммерческая версия pro, в которой доступны некоторые дополнительные возможности, в частности, построение штрих-кодов). В статье речь пойдет о стандартной версии, о возможностях коммерческой читатель может ознакомиться на сайте производителя – http://www.aditus.nu/jpgraph/jpg_proversion.php. Ещё одним достоинством этого продукта является прекрасная документация, идущая вместе с дистрибутивом. На самом деле подробность документации ставит под сомнение необходимость чтения этой статьи, но автор этих строк, как наверняка и кто-нибудь из вас, попадал в ситуацию, когда времени на обстоятельное изучение руководства просто нет, и я попытался изложить этот материал для того, чтобы программист по его прочтении мог немедленно приступить к работе.

Оставшая часть статьи доступна только подписчикам. Если вы желаете продолжить чтение этой статьи, то вам необходимо подписаться на эту статью или весь номер.

Подписаться на весь номер

Зарегистриванные пользователи, пожалуйста следуйте по этой ссылке