GD Library - эффективное использование
Прежде всего замечу, что для полного понимания материала данной статьи
необходимо иметь некоторые знания о работе с библиотекой GD.
Предполагается, что читатель уже работал с ней или хотя бы теоретически
подкован.
Предисловие
Примеры к
статье - 152 кб
После выхода в свет PHP 4.3, библиотека GD начала поставляться с ним
одной связке. Для проверки, установлена ли данная библиотека в вашей
системе, запустите функцию phpinfo() и найдите секцию GD. Если же таковой
не окажется, то для ее установки нужно: 1) наличие самого файла php_gd.dll
в папке php-4.x.xextensions 2) убрать ";" в строке ";extension=php_gd.dll"
файла php.ini.
Еще небольшое замечание: так как предполагается, что графика, созданная
с помощью РHP, предназначена для просмотра посетителю, то необходимо
позаботиться о ее размерах. Ведь выделенные каналы есть не у всех, а ведь
не хочется, чтобы ваш сайт был закрыт еще до окончания его загрузки.
Библиотека GD стала столь популярной благодаря тому, что с ее помощью
возможно динамически генерировать различные графические элементы. Чаще
всего это необходимо для различного рода счетчиков, эскизов и рекламных
материалов. Более сложное применение функций библиотеки GD можно встретить
в изменении цвета изображения или же "фокусами" со шрифтами. Это можно
применить, например, при наведении курсора мыши на определенную картинку.
Часть 1 - Изменяем цвет
На самом деле в изменении цвета изображения ничего сложного нет. Самый
простой способ - это создать изображение таких же размеров и залить его
новым цветом. А потом это изображение накладывается поверх исходного.
Листинг
1.
Вот что получиться, если
использовать для наложения слой синего цвета RGB(0,0,255):
А сейчас рассмотрим другое применение графической
библиотеки. Это будут функции работы со шрифтами TTF (TrueType Font). Их
всего две - imagettftext и imagettftextbbox. Но практически используется
только одна: imagettftext (записывает текст на изображение с
использованием шрифтов TrueType).
С тех пор, как PHP стал работать с графикой,
появилась возможность широко использовать его в комбинации с функциями
TTF. Таким образом можно получить много интересных эффектов: текстуры,
тени и прозрачный текст.
Часть 2 - Затенение
Пожалуй, самый простой текстовый эффект -
затенение. Этот эффект делается очень просто: рисуем смещенный текст, а
потом накладываем на него исходный текст. Еще можно использовать
прозрачный текст для создания лучшего эффект тени, но об этом чуть позже.
Листинг
2.
Как видите, ничего сложно в реализации эффекта
"тени" ничего сложного нет.
Выделение текста также довольно просто реализовать.
Теоретически для этого нужно нарисовать линию слева, справа, над- и под
исходным текстом. Данный метод успешно работает с всеми шрифтами, так как
все сводиться к перемещению за один раз одного пикселя. Чтобы создавать
такой контур, нам необходимо лишь знать ширину текста. Затем создаем два
цикла:
Листинг
3.
Теперь, вызвав функцию imagettftextoutline($img,40,0,10,50,$red,$black,"arial.ttf","AaBbCcDd",3) ,
можно получить следующее:
Часть 3 - Прозрачный текст
Создать прозрачный текст не так просто, как тень или обводку контура.
Но на php нет ничего невозможного. Прозрачность создается путем
перемещения текста в буфер (для редактирования), а затем возврат обратно и
наложением на исходную картинку.
Листинг
4.
В результате выполнения данной функции исходное
изображение остается без изменений. Вот только сверху на него добавляется
полупрозрачный текст. Данный пример иллюстрирует это:
Часть 4 - Текстуры
Создание текста с текстурой - один из самых сложных
эффектов. Для его воплощения необходимо знать, как использовать так
называемое "маскирование". Поможет разобраться в этом следующая функция:
Листинг
5.
Представленный выше код - самый объемный в данной
статье, хотя и используется для создания простого текстурированного
текста. Это быстрее можно сделать в том же Photoshop'е, а теперь это стало
возможным с использованием PHP и GD. При вызове функции imagettftexttexture
($img,$texture,40,0,10,50,"arial.ttf","AaBbCcDd") где $texture содержит картинку с текстурой (в нашем
примере - кирпичная стена), то результатом ее работы будет следующее
изображение:
На этом я завершаю свою статью о работе с
графической библиотекой GD. Надеюсь, что рассмотренные примеры помогут вам
расширить область применения языка PHP и создавать полезные скрипты.
Автор: Николай Рудченко
Источник: www.codeguru.com.ua
|