» Главная
eXcode.ru » Статьи » PHP » Примеры
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 9







Рисование в PHP




Источник: Евгений Евсеев legat /БарбоС/ nm.ru
Центр: дистанционное обучение (http://edu-rus.org)

$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, 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);

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





Добавил: LedWormДата публикации: 2005-11-22 19:35:06
Рейтинг статьи:5.00 [Голосов 1]Кол-во просмотров: 9503

Комментарии читателей

Всего комментариев: 4

2012-02-19 18:46:51
Illuddich
&#1057;&#1080;&#1089;&#1090;&#1077;&#1084;&#1072; X-Registar&#174; &#8211;&#1052;&#1080;&#1088;&#1086;&#1074;&#1086;&#1081; &#1075;&#1091;&#1084;&#1072;&#1085;&#1080;&#1090;&#1072;&#1088;&#1085;&#1099;&#1081; &#1087;&#1088;&#1086;&#1077;&#1082;&#1090;, &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090; &#1089;&#1086;&#1090;&#1088;&#1091;&#1076;&#1085;&#1080;&#1095;&#1077;&#1089;&#1090;&#1074;&#1072; &#1074;&#1088;&#1072;&#1095;&#1077;&#1081; &#1080; &#1089;&#1087;&#1077;&#1094;&#1080;&#1072;&#1083;&#1080;&#1089;&#1090;&#1086;&#1074; &#1074; &#1086;&#1073;&#1083;&#1072;&#1089;&#1090;&#1080; IT. &#1062;&#1077;&#1083;&#1100; &#1087;&#1088;&#1086;&#1077;&#1082;&#1090;&#1072; &#8211; &#1087;&#1088;&#1086;&#1092;&#1080;&#1083;&#1072;&#1082;&#1090;&#1080;&#1082;&#1072; &#1047;&#1055;&#1055;&#1055;. <a href=http://x-registar.ru>лечение генетального герпеса</a>

2010-02-08 09:58:06
ujin
хм.. интересно, а цвет конкретного пиксела в картинке можно узнать?

2006-08-09 13:41:14
sanika
да, можно $image = imagecreatefromjpeg(“имя файла или URL&ldquo;); -- Создаёт картинку из Jpeg файла

2006-05-14 14:49:10
Олег
Я, вот, не могу найти, можно ли сделать подложку из готового рисунка, чтобы лишнего не рисовать.
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Каким способом вы подключены к интернету
Dial-Up
26% (59)
ISDN
1% (2)
Выделенная линия
27% (61)
ADSL
32% (71)
Спутниковый интернет
2% (5)
GPRS-интернет
8% (17)
Другое
4% (9)

Проголосовало: 224
Вспоминаю что надо сходить в магазин за продуктаим - беру деньги смотрю нехватает ,а сам уже автоматически думаю надо взять отгрузочный файл - найти байты денег и сделать себе побольше...
Рейтинг: 5.5/10 (2)
Посмотреть все анекдоты

 
eXcode.ru » Статьи » PHP » Примеры