![]() |
Статьи | Новости | Контакты | |||||||
|
||||||||||
|
||||||||||
Далеко не всегда графика на веб-ресурсе используется исключительно для придания ему уникального внешнего вида. Зачастую у разработчика возникает необходимость использовать графические представления для наглядного отображения приводимых на сайте данных, показывать в материалах сайта динамически изменяемые в зависимости от каких-либо условий или поведения и запросов пользователя иллюстрации, защищать формы для отправки данных на сервер графическим подтверждением, изменяющимся при каждом обращении к форме. Обычными картинками, созданными в любом графическом редакторе, тут не обойтись – и на помощь приходит PHP с его мощными средствами работы с изображениями. Для создания и всевозможных манипуляций с изображениями форматов jpeg, png, tiff, gif вам понадобится библиотека gd_library*. Начиная с версии PHP 4.3 эта библиотека является встроенной. Вам необходимо установить или перекомпилировать PHP с указанием --with-gd. Для пользователей Windows необходимо в файле php.ini указать расширение extension=php_gd2.dll. Gd-library – это open-source (проект с открытым кодом), работа над новыми версиями ведется постоянно. Получить свежайший релиз библиотеки возможно на официальном сайте http://www.libgd.org/, там же доступна и подробная документация по работе с функциями. При работе с изображениями разработчику может понадобиться поддержка дополнительных шрифтов и форматов – имеются специальные расширения библиотеки gd для работы с форматами gif, xpm и другими, а также для установки дополнительных шрифтов. Рассмотрим основные функции, позволяющие создавать, модифицировать и выводить в браузер изображения. Функции для создания изображений из уже существующих: Основные функции для работы с графикой Imagecreatefromgif(), imagecreatefrompng(), imagecreatefromjpeg() и подобные, принимая в качестве аргумента url или путь к файлу изображения, возвращают идентификатор, представляющий данное изображение.
Например: $image = imagecreatefromgif(‘path/to/your/image.gif’) вернет идентификатор картинки image.gif, посредством которого в последствии можно модифицировать изображение, выводить на него текст, комбинировать его с другими изображениями. В случае неудачи выполнения функции этого типа возвращают false, то есть проверить и обработать неудачу легко можно, сделав проверку типа: if (!$image = @imagecreatefromgif(‘path/to/your/image.gif’)) Функции для создания нового изображения: Imagecreatetruecolor(), imagecreate() создают пустые изображения, принимая в качестве параметра ширину и высоту создаваемого изображения в пикселях. Таким образом, если в предыдущем примере нам не удалось создать идентификатор уже существующего изображения, мы может создать новое изображение. if (!$image = @imagecreatefromgif(‘path/to/your/image.gif’)) Функции для работы с цветами: Imagecolorallocate() – принимая в качестве аргументов идентификатор изображения и три компоненты нужного цвета (RGB: красную, зеленую и синюю составляющую), определяет нужный цвет для данного изображения. В нашем примере определим цвета фона и шрифта для вывода текста: $fontcolor = imagecolorallocate($image, 0, 0, 0); Функции заливки изображения цветом: Imagefill(), imagefilledrectangle(), imagefilledarch(), imagefilledellipse() и прочие imagefill… функции, принимая в качестве аргументов координаты геометрических фигур на изображении, обеспечивают заливку этих частей картинки указанным цветом. К примеру, зальем наш прямоуголник цветом фона: imagefill($image, 0, 0, $backgroundcolor); //здесь 0, 0 – это координаты левого верхнего угла заливаемой площади. Функции для вывода текста: Imagestring(), imagettftext(), imagestringup() выводят на изображении текст в различных направлениях, используя различные шрифты. Например, Кроме встроенных шрифтов вы можете использовать зарегистрированные посредством функции imageloadfont() шрифты. Функция imagettftext() позволяет использовать шрифты типа true type.
На этой стадии у вас может возникнуть проблема с выводом текста на русском языке – встроенные шрифты (для функции imagestring() 1-5 в зависимости от размера) не поддерживают кириллицу, и даже при указании своего шрифта функции imagettftext() кириллица может выводиться в неверной кодировке. Есть несколько способов решения этой проблемы. Самый простой – конвертировать строку с символами кириллицы в кодировку UTF-8: Также нам может помочь загрузка своего шрифта, например, формата .phpfont посредством imageloadfont(). Такой шрифт может быть создан в специальном редакторе и будет поддерживать все необходимые вам символы, в том числе и русские буквы. Благодаря этой возможности вы также можете использовать нестандартные шрифты – все, на какие способно ваше воображение. Слияние изображений: Imagecopymerge(), imagecopy(), imagecopymergegray(), imagecopyresampled(), imagecopyresized(). Функции gd_library могут также управляться не с одним, а с несколькими изображениями. Например, функция imagecopy() позволяет наложить одно изображение на другое по точно указанным координатам. Эта возможность широко используется в популярном сейчас сервисе отсчета времени на графическом измерителе (линейки отсчета времени metric): суть отсчета заключается в том, что координаты расположения бегунка на измерителе определяются в зависимости от количества прошедших дней/месяцев/лет с момента начала отсчета. Напрмер: Добавление специальных эффектов: Множество функций gd_library позволяют добавлять специальные эффекты на текущее изображение, рисовать на нем новые объекты, выделять определенные области и прочее. Приведем всего несколько примеров:
Выдача полученного изображения пользователю: Функции вида imagegif(), imagepng(), imagejpeg() выводят полученный результат в браузер или в файл. Не забудьте, что заголовок Content-Type для таких скриптов должен быть переопределен: Пример использования функций GD-библиотеки header("Content-type: image/gif");imagegif($image); Доведем наш пример до логического завершения. Предположим, нашей целью было создание так называемой капчи (captcha), то есть картинки, на которой при каждом обращении к странице будет демонстрироваться новая последовательность из символов – например, четырехзначное число.
<?php Данный скрипт всегда можно усложнить, например, добавив угол наклона для надписи, тень от цифр, применив фильтры к полученному изображению. Работа с фотографиями: Работа с мета-данными цифровых фотографий Расширение exif* позволяет работать с информацией, хранящейся в заголовках цифровых фотографий. Для работы с функциями данного расширения нет необходимости ни в каких дополнительных библиотеках, PHP просто должен быть установлен с поддержкой --enable-exif. Для пользователей Windows: в файле php.ini должны быть указаны расширения extension=php_mbstring.dll и extension=php_exif.dll, притом mbstring обязательно должен быть указан первым.
Функция exif_imagetype(), принимая в качестве аргумента путь к файлу, позволяет определить формат изображения. Это необходимо для того, чтобы не применять другие функции exif к изображениям неподдерживаемых форматов. Формат изображения для последующей работы с данными функциями должен быть gif, jpeg, png, swf, psd, bmp, tiff_II, tiff_MM, jpc, jp2, jpx, jb2, swc, iff, wbmp, xbm. Функция exif_read_data() считывает exif-заголовки из файлов формата jpeg и tiff. Например:
В этой статье описаны возможности применения лишь некоторых функций — как gd_library, так и exif-extension. Более подробную информацию обо всех доступных функциях работы с изображениями в PHP можно найти на страницах официального сайта в разделе Image Functions и Exif Functions. Ссылки по теме |
Скоро на сайте
|
|||||||||
Copyright © 2003—2022 Все права защищены При использовании материалов сайта ссылка на hostinfo.ru обязательна |
||||||||||