Вступ

Мова PHP (офіційно: «PHP — гіпертекст препроцесор»), вбудований в HTML мова сценаріїв на стороні сервера. Це потужний мову, що дозволяє розробнику звертатися до баз даних різних типів і виробників, працювати з масивами, регулярними виразами, робити мережеві запити, а також багато-багато іншого… і все це можна виконати з HTML-коду! А результат — віддати на клієнтську сторону, в браузер.

Однією з особливостей PHP є можливість створення зображень, як кажуть, «на льоту». Що це означає? Це означає, що скрипт, написаний на PHP видає після виконання HTTP-заголовок Content-type: з відповідним створеному типу зображення значенням і після цього виводить зображення, виходить ніби веб-сервер видав зображення як таке, а не як результат виконання скрипта.

Застосувань цієї можливості PHP дуже багато на практиці. Найпростіше застосування — створення лічильників. Можна створити безліч лічильників, різних відтінків, з використанням різних TrueType шрифтів. Найяскравіший приклад — www.topping.com.ua/ — українська система рейтингу сайтів Інтернет.

Необхідні компоненти

Насамперед для створення зображень з видачею користувачеві в браузер необхідний веб-сервер. Краще всього для цього підійде веб-сервер Apache. Далі — потрібно отримати найсвіжішу версію PHP, можна тут: www.php.net/downloads.php, а також всі необхідні компоненти:

gd [gd-1.8.3.tar.gz]

t1lib [t1lib-1.0.1.tar.gz]

jpeg-6b [jpegsrc.v6b.tar.gz]

libpng [libpng-1.0.6.tar.gz]

freetype [freetype-1.3.1.tar.gz] (бібліотека для промальовування TT шрифтів)

Увага! Номери версій вказані на момент написання цієї статті та можуть застаріти на момент читання.

Після установки всіх бібліотек і т. д. по місцях потрібно зібрати модуль PHP. Після цього зупинити (якщо запущений веб-сервері і запустити заново або запустити свіжозібраний httpd, попередньо підправивши під свої потреби конфігураційний файл httpd.conf. Після цього веб-сервер з модулем PHP і можливістю створення зображень «на льоту» готовий! Можна користуватися.

Створення скрипта

Перший рядок видає HTTP-заголовок Content-type: image/png, який оголошує браузерів про те, що тип подальшої інформації є графічне зображення формату PNG.

Наступна рядок повертає ідентифікатор зображення $img, який PHP буде асоціювати з зображенням розміром 400 пікселів по горизонталі і 80 по вертикалі.

З третьої по п’яту рядок відбувається асоціювання кольорів з палітри RGB (red-green-blue) зі змінними PHP. Функція ImageColorAllocate повинна бути викликана для асоціації будь-якого кольору, який може бути використаний в майбутньому зображенні.

Функція ImageColorTransparent використовує два аргументи — ідентифікатор зображення і колір з палітри RGB (змінна PHP). В результаті майбутнє зображення буде створено з прозорим кольором зазначеним у змінній (другий аргумент). Нажаль ця функція застосовується тільки з GIF-зображеннями, але цей формат починаючи з версії 1.6 gd не підтримується. Це пов’язано з тим, що Unisys володіє патентом LZW-стиснення.

ImageFill — заповнення зображення $img кольором $white починаючи з позиції «0, 0» — верхній лівий кут. Я сам не зрозумів навіщо вказувати координати? За логікою потрібно вказувати тільки зображення і колір… ну да ладно. Думаю розробники постаралися зробити функції надлишковими — раптом кому стане в нагоді… 🙂

Функція ImageString промальовує рядок тексту (5-ий аргумент) кольору $white у позиції«10, 10» (3-, 4-ий аргументи) стандартним шрифтом з фіксованою шириною символів. Ця функція має мало можливостей промальовування тексту в зображеннях, але ці можливості можна розширити за допомогою функції ImageLoadFont.

Функція ImageTTFText промальовує текст на зображенні за допомогою TrueType шрифтів, які розробник може самостійно підключити. Другий аргумент вказує розмір шрифту, використовуваного для промальовування. Третій — кут нахилу майбутнього тексту відносно горизонталі. (Використовуючи кут 90°, розробник отримує текст, написаний знизу вгору, тобто вертикально.) Далі — 4 – і 5-ий аргументи призначені для вказівки координат початку рядка тексту (точніше: лівого нижнього кута першої літери тексту, що протилежно поведінки функції ImageString, яка використовує координати для вказівки верхнього правого кута першої літери тексту). Такі аргументи, які використовуються — це колір тексту, шрифт (шлях до файлу шрифту) і власне текст.

Дві останні функції (ImagePng і ImageDestroy) видають зображення браузеру і видаляють його з пам’яті відповідно. Аргументом в обох випадках виступає ідентифікатор зображення. Крім функції ImagePng допустимо використання функції ImageJpeg з попереднім зазначенням цього у HTTP-заголовку Content-type:)