Головна PHP Малювання в PHP
Малювання в PHP

Приклад створення динамічного зображення

$image = imagecreate(width X, height Y)-- Створює нову картинку з ідентифікатором $image і параметрами width X - ширина, height Y - висота. З яким в подальшому і працюватимемо. Або можна по іншому:

$image = imagecreatefromgif("ім'я файлу або URL"); -- Створює картинку з Гіфа
$image = imagecreatefromjpeg("ім'я файлу або URL"); -- Створює картинку з Jpeg файлу
$image = imagecreatefrompng("ім'я файлу або URL"); -- Створює картинку з Png файлу
$image = imagecreatefromwbmp("ім'я файлу або URL"); -- Створює картинку з Bmp файлу

Реєструємо кольори(додаємо в палітру), які використовуватимемо:

$colorBackgr = imagecolorallocate($image, 255, 255, 255); // Білий Колір
$colorForegr = imagecolorallocate($image, 255, 0, 0); // Червоний Колір
$textcolor = imagecolorallocate ($image, 0, 0, 0 ); // Чорний колір (відсутність якого або кольори)

imagecolordeallocate($colorForegr);
Видаляємо колір з палітри, якщо не потрібний

Формат команди простій:
imagecolorallocate(ідентифікатор малюнка, RED, GREEN, BLUE);

RGB - це я вивчив ще з часів ZX Spectrum-а 8-)))

Потім малюємо фон, він у нас буде простим квадратом розміром у все поле малюнка:

imagefilledrectangle($image, X1, Y1, X2, Y2 $colorBackgr);

Ця команда малює прямокутник, залитий вказаним кольором в ідентифікаторі малюнка $image по початкових координатах: X1, Y1 і кінцевими X2, Y2 Колір: $colorBackgr

Можна просто намалювати прямокутник без заливки командою:

Imagerectangle($image, X1, Y1, X2, Y2 $color);

Або лінію:

Imageline($image, X1, Y1, X2, Y2 $color);

Є цікава команда, малювання багатокутників( із замкнутим !!! контуром ), яка бере координати вершин з масиву:

$arr = array(X1, Y1, X2, Y2, X3, Y3, X4, Y4, X5, Y5);
Imagepolygon($image, $arr, 5 $color);

$arr - масив, що містить дані вершин багатокутника
5, - кількість вершин, що вигрібаються з масиву
$color - колір рамки багатокутника

 

Є аналогічна команда для малювання багатокутника із заливкою:

Imagefilledpolygon($image, $arr, 5 $color);

 

// Відправляємо заголовок Content-type
//header("Content-type: image/gif"); Який говорить браузеру, що подальший потік даних буде КАРТИНКОЮ !
header("Content-type: image/jpeg");

// задаємо чересстрочний режим
imageinterlace($image, 1);

// робимо колір фону прозорим
imagecolortransparent($image, $colorBackgr);

// і виводимо зображення
//imagejpeg($image);
imagejpeg($image);

Взагалі у мене при виведенні зображення у форматі PNG спостерігався всякий Глюк, тому рекомендую робити все у форматі JPG
Можна виводити зображення в інших форматах:
imagepng($image);
imagegif($image);
imagewbmp($image);

Тут ви думаю самі здогадалися, як це працює. АЛЕ !!! Tckb ви виводите зображення в іншому форматі, то його(цей формат) треба також указувати і при відправці заголовка, який відправляється ДО початку виведення потоку даних:
header("Content-type: image/png");
header("Content-type: image/gif");
header("Content-type: image/wbmp");

Далі... Враховуючи, що Php-шноє малювання використовується в основному для лічильників і виведення тексту, поверх картинки, то приведу команди роботи з текстом:

imagestring($image, 3, X, Y, "Текст напису" $textcolor);
Тут:
$image - ідентифікатор малюнка.
3 - Розмір шрифту.
X, Y - Верхня ліва крапка почала написи
"Текст напису" - Самі здогадайтеся, що це таке %)
$textcolor - Колір тексту, заданий вище командою Imagecolorallocate (він у нас чорний)

imagestringup($image, 3, X, Y, "Текст напису" $textcolor);
Ця команда малює вертикальний текст, тоєсть зверху вниз. параметри теже.

imagettftext($image, розмір, кут нахилу тексту, X, Y $color, "шрифт xxx.ttf", "сам текст собсно");
Ця команда малює текст, використовуючи стандартний файл шрифтів xxxx, що підключається.ttf Параметри думаю пояснювати не треба.

Також можна малювати:

imageellipse($image, X, Y, ширина, висота $color); // Еліпс

imagearc($image, CX, CY, W, H, S, e $color); // Дуга, яка вдає із себе шматок кола еліпса

Малюється дуга, яка вдає із себе шматок еліпса
CX, CY - центр еліпса
W, H - висота, ширина
S - Стартовий кут дуги (якщо 0 те почало на три години)
e - Кінцевий кут дуги

Лічильники на сайтах влаштовані зовсім просто:

$image = imagecreatefromjpeg("ім'я файлу або URL");
// Беремо шаблон картинки, завантажуючи її з файлу

$textcolor = imagecolorresolve($image, R, G, B); // Це команда, яка повертає номер кольору, який щонайближче в палітрі шаблонної картинки до параметрів R, G, B Що зовсім не означає, що він буде саме таким, який ви хочете, бо в палітрі потрібний колір може бути просто відсутнім. Тому краще заздалегідь вибрати цією командою відповідний номер кольору, а потім вже задати його номером

imagestring($image, 3, X, Y, "Текст напису" $textcolor);
// Пишемо по картинці че нитку потрібне і важливе

header("Content-type: image/jpeg");

imageinterlace($image, 1);

// і виводимо зображення
imagejpeg($image);

Потім даний скриптик пхаємо в counter.php і на сторіночці її поміщаємо в такому ось вигляді:

<img src="/counter.php" mce_src="/counter.php" width="x" height="y">

Якщо вам треба в скрипті потерти картинку на ідентифікаторі, а потім знову її створити, то можна скористатися командою:

imagedestroy($image);

Ось в принципі і все. Основні команди роботи з графікою я вам показав, далі, якщо щось ще потрібне, то палите мануали %))) Там багато всього є.

 
© 2008-2013 PHPist