| Малювання в PHP |
|
Приклад створення динамічного зображення $image = imagecreate(width X, height Y)-- Створює нову картинку з ідентифікатором $image і параметрами width X - ширина, height Y - висота. З яким в подальшому і працюватимемо. Або можна по іншому: $image = imagecreatefromgif("ім'я файлу або URL"); -- Створює картинку з Гіфа Реєструємо кольори(додаємо в палітру), які використовуватимемо: $colorBackgr = imagecolorallocate($image, 255, 255, 255); // Білий Колір $colorForegr = imagecolorallocate($image, 255, 0, 0); // Червоний Колір $textcolor = imagecolorallocate ($image, 0, 0, 0 ); // Чорний колір (відсутність якого або кольори) imagecolordeallocate($colorForegr); Формат команди простій: 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); Взагалі у мене при виведенні зображення у форматі PNG спостерігався всякий Глюк, тому рекомендую робити все у форматі JPG
// Відправляємо заголовок Content-type // задаємо чересстрочний режим // робимо колір фону прозорим // і виводимо зображення Можна виводити зображення в інших форматах: 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); imagestringup($image, 3, X, Y, "Текст напису" $textcolor); imagettftext($image, розмір, кут нахилу тексту, X, Y $color, "шрифт xxx.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); // і виводимо зображення Потім даний скриптик пхаємо в counter.php і на сторіночці її поміщаємо в такому ось вигляді: <img src="/counter.php" mce_src="/counter.php" width="x" height="y"> Якщо вам треба в скрипті потерти картинку на ідентифікаторі, а потім знову її створити, то можна скористатися командою: imagedestroy($image); Ось в принципі і все. Основні команди роботи з графікою я вам показав, далі, якщо щось ще потрібне, то палите мануали %))) Там багато всього є. |