GD Library - эффективное использование

Автор: Николай Рудченко (http://www.codeguru.com.ua)

Прежде всего замечу, что для полного понимания материала данной статьи необходимо иметь некоторые знания о работе с библиотекой GD. Предполагается, что читатель уже работал с ней или хотя бы теоретически подкован.

Предисловие

Примеры к статье - 152 кб

После выхода в свет PHP 4.3, библиотека GD начала поставляться с ним одной связке. Для проверки, установлена ли данная библиотека в вашей системе, запустите функцию phpinfo() и найдите секцию GD. Если же таковой не окажется, то для ее установки нужно: 1) наличие самого файла php_gd.dll в папке php-4.x.x\extensions\ 2) убрать ";" в строке ";extension=php_gd.dll" файла php.ini.

Еще небольшое замечание: так как предполагается, что графика, созданная с помощью РHP, предназначена для просмотра посетителю, то необходимо позаботиться о ее размерах. Ведь выделенные каналы есть не у всех, а ведь не хочется, чтобы ваш сайт был закрыт еще до окончания его загрузки.

Библиотека GD стала столь популярной благодаря тому, что с ее помощью возможно динамически генерировать различные графические элементы. Чаще всего это необходимо для различного рода счетчиков, эскизов и рекламных материалов. Более сложное применение функций библиотеки GD можно встретить в изменении цвета изображения или же "фокусами" со шрифтами. Это можно применить, например, при наведении курсора мыши на определенную картинку.

Часть 1 - Изменяем цвет

На самом деле в изменении цвета изображения ничего сложного нет. Самый простой способ - это создать изображение таких же размеров и залить его новым цветом. А потом это изображение накладывается поверх исходного.

Листинг 1.



Вот что получиться, если использовать для наложения слой синего цвета RGB(0,0,255):

Mona Lisa Blue Mona Lisa

А сейчас рассмотрим другое применение графической библиотеки. Это будут функции работы со шрифтами TTF (TrueType Font). Их всего две - imagettftext и imagettftextbbox. Но практически используется только одна: imagettftext (записывает текст на изображение с использованием шрифтов TrueType).

С тех пор, как PHP стал работать с графикой, появилась возможность широко использовать его в комбинации с функциями TTF. Таким образом можно получить много интересных эффектов: текстуры, тени и прозрачный текст.

Часть 2 - Затенение

Пожалуй, самый простой текстовый эффект - затенение. Этот эффект делается очень просто: рисуем смещенный текст, а потом накладываем на него исходный текст. Еще можно использовать прозрачный текст для создания лучшего эффект тени, но об этом чуть позже.

Листинг 2.

 
Как видите, ничего сложно в реализации эффекта "тени" ничего сложного нет.

Выделение текста также довольно просто реализовать. Теоретически для этого нужно нарисовать линию слева, справа, над- и под исходным текстом. Данный метод успешно работает с всеми шрифтами, так как все сводиться к перемещению за один раз одного пикселя. Чтобы создавать такой контур, нам необходимо лишь знать ширину текста. Затем создаем два цикла:

Листинг 3.

 

Теперь, вызвав функцию imagettftextoutline($img,40,0,10,50,$red,$black,"arial.ttf","AaBbCcDd",3), можно получить следующее:

ABCDEF Picture

Часть 3 - Прозрачный текст

Создать прозрачный текст не так просто, как тень или обводку контура. Но на php нет ничего невозможного. Прозрачность создается путем перемещения текста в буфер (для редактирования), а затем возврат обратно и наложением на исходную картинку.

Листинг 4.


 
В результате выполнения данной функции исходное изображение остается без изменений. Вот только сверху на него добавляется полупрозрачный текст. Данный пример иллюстрирует это:

picture with transparent text

Часть 4 - Текстуры

Создание текста с текстурой - один из самых сложных эффектов. Для его воплощения необходимо знать, как использовать так называемое "маскирование". Поможет разобраться в этом следующая функция:

Листинг 5.


 
Представленный выше код - самый объемный в данной статье, хотя и используется для создания простого текстурированного текста. Это быстрее можно сделать в том же Photoshop'е, а теперь это стало возможным с использованием PHP и GD. При вызове функции imagettftexttexture ($img,$texture,40,0,10,50,"arial.ttf","AaBbCcDd") где $texture содержит картинку с текстурой (в нашем примере - кирпичная стена), то результатом ее работы будет следующее изображение:

ABCDEF with brick

На этом я завершаю свою статью о работе с графической библиотекой GD. Надеюсь, что рассмотренные примеры помогут вам расширить область применения языка PHP и создавать полезные скрипты.



Опубликовал admin
23 Май, Вторник 2006г.



Программирование для чайников.