Php рисуем на картинке

Закрыть ... [X]

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

$image = imagecreate(width X, height Y) -- Создаёт новую картинку c идентификатором $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);

Есть интересная команда, рисования многоугольников( c замкнутым!!! контуром ), которая берёт координаты вершин из массива:
$arr = array(X1, php рисуем на картинке 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" width="X" height="Y">

Если вам надо в скрипте потереть картинку на идентификаторе, а потом снова её создать, то можно воспользоваться командой:
imagedestroy($image);

Вот в принципе и всё. Основные команды работы с графикой я вам показал, далее, если что-то ещё нужно, то курите мануалы %))) Там много всего есть.

Источник: http://edu-rus.org
Источник: http://www.codingclub.net/Articles/PHP/Risovanie_v_PHP


Поделись с друзьями



Рекомендуем посмотреть ещё:



Документация php 5 - Рисование текста на изображении шрифтом TrueType Правильное вязание круга крючком

Php рисуем на картинке Php рисуем на картинке Php рисуем на картинке Php рисуем на картинке Php рисуем на картинке Php рисуем на картинке Php рисуем на картинке Php рисуем на картинке Php рисуем на картинке

ШОКИРУЮЩИЕ НОВОСТИ