Life lines графіка в php (як робляться линеечки-метрики)

Все на нашому сайті - для прикраси ваших власних сторінок. Тепер ми намагаємося зібрати цікаві та корисні матеріали про дизайн і на околодізайнерскіе теми, про програмування, хостингу та просуванні сайтів.

Web-design - питання, безпосередньо пов'язані зі створенням сайтів

Графіка - малюємо, коллажіруем, анімуємо

Hosting - питання розміщення Ваших сайтів в мережі

Життя в мережі

Розкрутка, просування, оптимізація

програмування

Для створення і всіляких маніпуляцій з зображеннями форматів jpeg, png, tiff, gif вам знадобиться бібліотека gd_library. Починаючи з версії PHP 4.3 ця бібліотека є вбудованої. Вам необхідно встановити або перекомпіліровать PHP із зазначенням --with-gd. Для користувачів Windows необхідно в файлі php.ini вказати розширення extension = php_gd2.dll.

При роботі з зображеннями розробнику може знадобитися підтримка додаткових шрифтів і форматів - є спеціальні розширення бібліотеки 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'))
$ Image = imagecreatetruecolor (88, 31); // якщо не було створено зображення на основі image.gif, ми створюємо нову картинку розміром 88 на 31 пікселів
>

Функції для роботи з квітами:

Imagecolorallocate () - приймаючи в якості аргументів ідентифікатор зображення і три компоненти потрібного кольору (RGB: червону, зелену і синю складову), визначає потрібний колір для даного зображення.

У нашому прикладі визначимо кольору фону і шрифту для виведення тексту:

$ Fontcolor = imagecolorallocate ($ image, 0, 0, 0);
$ Backgroundcolor = imagecolorallocate ($ image, 255, 255, 255);

Функції заливки зображення кольором:

Imagefill (), imagefilledrectangle (), imagefilledarch (), imagefilledellipse () та інші imagefill ... функції, приймаючи в якості аргументів координати геометричних фігур на зображенні, забезпечують заливку цих частин картинки вказаним кольором. Наприклад, заллємо наш прямоуголнік кольором фону:

imagefill ($ image, 0, 0, $ backgroundcolor); // тут 0, 0 - це координати лівого верхнього кута заливається площі.

Функції для виведення тексту:

Imagestring (), imagettftext (), imagestringup () виводять на зображенні текст в різних напрямках, використовуючи різні шрифти.

наприклад,
imagestring ($ image, 5, 0, 0, 'text', $ fontcolor); // виводимо слово text на наше зображення $ image вбудованим шрифтом за координатами (верхня ліва точка) 0, 0.

Крім вбудованих шрифтів ви можете використовувати зареєстровані за допомогою функції imageloadfont () шрифти. Функція imagettftext () дозволяє використовувати шрифти типу true type.

На цій стадії у вас може виникнути проблема з виведенням тексту російською мовою - вбудовані шрифти (для функції imagestring () 1-5 в залежності від розміру) не підтримують кирилицю, і навіть при вказівці свого шрифту функції imagettftext () кирилиця може виводитися в невірній кодуванні.

Є кілька способів вирішення цієї проблеми. Найпростіший - конвертувати рядок з символами кирилиці в кодування UTF-8:
$ Text = iconv ( "windows-1251", "UTF-8", "наш текст");

Додавання спеціальних ефектів:

Безліч функцій gd_library дозволяють додавати спеціальні ефекти на поточне зображення, малювати на ньому нові об'єкти, виділяти певні області та інше. Наведемо лише кілька прикладів:

  • функція imagedashedline () - малює пунктирну лінію;
  • функція imageellipse () - малює еліпс;
  • функція imagesetbrush () - створює кисть;
  • функція imagefilter () - застосовує зображенню певний фільтр, наприклад, інвертує кольору зображення, переводить зображення в чорно-білий режим, змінює яскравість, контраст зображення, додає фаску та інше.

Видача отриманого зображення користувачу:

Функції виду imagegif (), imagepng (), imagejpeg () виводять отриманий результат в броузер або в файл. Не забудьте, що заголовок Content-Type для таких скриптів повинен бути перевизначений:

header ( "Content-type: image / gif");
imagegif ($ image);

Доведемо наш приклад до логічного завершення. Припустимо, нашою метою було створення так званої капчи (captcha), тобто картинки, на якій при кожному зверненні до сторінки демонструватиметься нова послідовність із символів - наприклад, четирхзначное число.


// пробуємо створити капчу з картинки з яким-небудь "гучним" фоном:
if (! $ image = @imagecreatefromgif ( "path / to / your / image.gif"))
// якщо не було створено зображення на основі image.gif, ми створюємо нову картинку розміром 88 на 31 пікселів
$ Image = imagecreatetruecolor (88, 31);
// визначаємо колір фону:
$ Backgroundcolor = imagecolorallocate ($ image, 255, 255, 255);
// заливаємо отримане зображення вибраним кольором:
imagefill ($ image, 0, 0, $ backgroundcolor);
>
// визначаємо колір шрифту:
$ Fontcolor = imagecolorallocate ($ image, 0, 0, 0);
// створюємо випадкове чотиризначний число:
$ Text = mt_rand (1000, 9999);
// виводимо число на картинку:
imagestring ($ image, 5, 0, 0, "text", $ fontcolor);
// і видаємо отриманий результат користувачу:
header ( "Content-type: image / gif");
imagegif ($ image);

Даний скрипт завжди можна ускладнити, наприклад, додавши кут нахилу для напису, тінь від цифр, застосувавши фільтри до отриманого зображенню.

Робота з фотографіями:

Розширення 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.

наприклад:

Life lines графіка в php (як робляться линеечки-метрики)

// перевіряємо, чи дійсно формат даного зображення jpeg
if (exif_imagetype ( "image.jpeg") == IMAGETYPE_JPEG)
// зчитуємо заголовки
$ Imagedata = exif_read_data ( "image.jpeg", 0, true);
if ($ imagedata === false)
echo "No headers"; // якщо заголовки відсутні
else
// виводимо масив заголовків по секціях
foreach ($ imagedata as $ key => $ section)
foreach ($ section as $ name => $ value)
echo "$ key. $ name. $ value";
>
>
>
else
echo "Non supported format";

У цій статті описані можливості застосування лише деяких функцій як gd_library, так і exif-extension. Більш детальну інформацію про всі доступні функції роботи з зображеннями в PHP можна знайти на сторінках офіційного сайту, в розділі Image Functions і Exif Functions.

Схожі статті