Одна из очень полезных возможностей PHP связана с генерацией изображений на лету. В PHP для этого предусмотрено несколько встроенных функций, и кроме того, для создания новых или изменения существующих изображений можно воспользоваться библиотекой gd.
Некоторые функции для работы с изображениями доступны в PHP всегда, однако большинство из них требует библиотеки GD2. Детальную информацию по GD2 можно найти по адресу http://www.boutell.com/gd/.
Начиная с версии 4.3, PHP поставляется со своей версией библиотеки GD2, поддерживаемой группой разработчиков PHP. Эта версия проще в установке и, как правило, более устойчива в работе, поэтому, скорее всего, многие отдадут предпочтения именно ей.
В Windows-версиях автоматически поддерживаются форматы PNG и JPEG.
Если нужно работать с форматом PNG под Unix? потребуется инсталлировать библиотеки libpng (http://www.libpng.org/pub/png/) и zlib (http://www.gzip.org/zlib).
Кроме того, необходимо сконфигурировать PHP со следующими опциями:
- -with - png - dir = /путь/к/libpng
- - with - zlib - dir = /путь/к/zlib
Если требуется поддержка JPEG под UNIX, необходимо загрузить модуль jpeg - 6b и перекомпилировать библиотеку GD с включенной поддержкой JPEG-формата. Модуль доступен для загрузки по адресу ftp://ftp.uu.net/graphics/jpeg/.
Далее следует переконфигурировать PHP с опцией
- - with - jpeg - dir = /путь/к/jpeg - 6b
и выполнить повторную компиляцию.
Если в изображениях планируется применять TtueType-шрифты, понадобится также библиотека FreeType, которая входит в состав PHP4. Ее можно загрузить с сайта http://www.freetype.org/.
Lkz использования вместо TrueType шрифтов PostScript Type 1 потребуется загрузить библиотеку t1lib, размещенную на сайте ftp://sunsite.unc.edu/pub/Linux/libs/graphics/.
После этого следует запустить конфигурационную программу PHP с опцией:
- - with - t1lib[=путь/к/t1lib]
В конце, понадобиться сконфигурировать PHP с опцией - - with -gd.
Библиотека GD поддерживает форматы JPEG, PNG и WBMP. Формат GIF больше не поддерживается. Рассмотрим кратко каждый из этих форматов.
JPEG обозначает Joint Photographic Experts Group (Объединенная группа экспертов по фотографии) и является названием группы стандартов, а не каким-то специфическим форматом. Формат файла, который обычно называют JPEG, в действительности имеет имя JFIF и соответствует одному из стандартов, выпущенных группой JPEG.
Формат JPEG обычно используется для хранения фотографических и других изображений с большим количеством цветов или оттенков. В этом формате используется сжатие с потерями, т.е. при уменьшении размера файла теряется качество. Поскольку формат JPEG предназначен преимущественно для хранения аналоговых изображений с оттенками цветов, то человеческий глаз может не заметить потери качества. Этот формат не подходит для хранения чертежей, текста или больших одноцветных областей.
Получить более подробную информацию о JPEG /ОАША можно на официальном сайте по адресу http://www.jpeg.org/.
PNG обозначает Portable Network Graphics (Переносимая сетевая графика). Этот формат файла рассматривается как замена формата GIF (Graphics Interchange Format —формат обмена графическими изображениями) по причинам, о которых будет рассказано ниже. На веб-сайте PNG этот формат описан как формат изображений со сжатием без потерь. Поскольку потерь не происходит, этот формат подходит для изображений, содержащих текст, прямые линии и блоки одного цвета, как например, заголовки или кнопки на веб-сайте — все те элементы, для представления которых ранее использовались GIF- изображения.
Сжатая PNG-версия изображения характеризуется сравнимыми размерами сжатой GIF-версии. В PNG также применяется переменная прозрачность, гамма-коррекция и двойное чередование. Однако он не поддерживает анимацию — для этого можно воспользоваться расширенным форматом MNG, который еще находится в стадии разработки.
Схемы сжатия без потерь хороши для иллюстраций, но не особенно подходят для хранения больших фотографий, поскольку в этом случае получаются файлы громадных размеров.
Более подробную информацию о формате PNG можно получить на официальном сайте PNG по адресу http://www.libpng.org/pub/png/.
WBMP обозначает Wireless Bitmap (Битовое изображение для безпроводной связи). Этот формат специально разработан для устройств беспроводной связи. В настоящее время он используется не особенно широко.
GIF обозначает Graphics Interchange Format (Формат обмена графическими изображениями). Этот формат со сжатием без потерь, широко используемый в Интернет для хранения изображений, содержащих текст, линии и блоки одного цвета.
Почему GD не поддерживает GIF?
Ответ заключается в том, что поддержка существовала вплоть до версии 1.3. Для некоторых старых версий PHP можно загрузить и установить библиотеку GD версии 1.3.
Разработчики GD не рекомендуют использовать эту версию и больше не поддерживают ее.
Существует немаловажная причина, почему GD больше не поддерживает формат GIF. В стандарте GIF применяется форма сжатия LZW (Lempel Ziv Welch), которая запатентована UNISYS. Разработчики программ, читающих и записывающих файлы в формате GIF, обязаны платить UNISYS лицензионные сборы. Так делает, скажем, компания Adobe, чьи продукты, например, Photoshop, используются для создания GIF-файлов. Библиотеки кодов находятся в ситуации, когда их авторы должны платить сборы, причем это распространяется и на пользователей. Таким образом, если вы на своем Web-сайте используете версию библиотеки GD с поддержкой GIF, то это значит, что вы должны заплатить UNISYS лицензионные сборы приличных размеров.
Похожие материалы по теме: