Разговаривают два менеджера. Один другому говорит:
-Слушай, вчера сел за компьютер поработать, а тот не включается. Я и так, и эдак,
все равно не включается. Позвал админа. Он пришел, посмотрел, воздел руки к небу,
что-то пробормотал, три раза обошел вокруг стула, пнул какой-то ящик, снова воздел
руки к небу, что-то пробормотал - и компьютер заработал!!!
Разговаривают два админа. Один другому:
-Слушай, вот есть чайники! вчера меня вызывают, машина не включается. Пришел,
смотю: этот олух до такой степени извертелся на стуле, что провод вокруг стула
накрутил;я провод размотал, воткнул вилку в розетку, системный блок подвинул - все
заработало !
Сегодняшний выпуск на тему рисования в PHP. Это просто. Сначала создаётся изображение одной из нижеприведённых команд:
$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);
Вот в принципе и всё. Основные команды работы с графикой я вам показал, далее, если что-то ещё нужно, то курите мануалы %))) Там много всего есть.