Вторник, 2024-04-23, 9:27 AM
Главная страница | Регистрация | Вход Приветствую Вас заблудившийся пакет | RSS
Меню сайта

Категории каталога
Программирование [58]
.. все с этим делом связаное..
Нейронные сети [4]
Нейронные сети, использование алгоритмы роботы
OC [6]
Unix, FreeBSD, Windows, Linux Описание, совети, секреты, настройки
WEB [25]
web-programming и все с этим связаное
Сети [2]
Описание сетей, сетевых технологий, настройки и некоторые секреты
Мабила [9]
Описание мобильных технологий, программинг под мабилу, и просто интересные моменты
Разное [10]
то что не вошло в другие категории.. прикольные истории про программеров и деятелей информационной индустрии
История [6]
История этого компьтерного мира и некоторых ее учасников
FREE [3]
free on the web..

Наш опрос
Какие категории сайта вам самые интересные?

Результаты · Архив опросов

Всего ответов: 139

Начало » Статьи » WEB

рисование средствами PHP
на стороне сервера. Большинство серверов с поддержкой PHP имеют эту библиотеку, а посему рисовать картинки стало по-настоящему просто, как с кухонным комбайном от тефаль. Использовать будем формат PNG, хотя ты можешь использовать GIF, JPEG и др, но если сравнишь их всех хотябы по весу, то увидешь приемущества первого перед остальными.

Итак, поехали! Сначала надо дать твоему любимому браузеру понять, что мы ему не аштээмэльку какую-нибудь пихаем, а самую что ни на есть картинку. Для этого надо отправить соответствующий заголовок:

header('Content-type: image/png');

После того, как файл "озаглавили", надо создать переменную типа "картинка" и обозначить width'ы и height'ы. Это делается с помощью функции imagecreate(width, height) или imagecreatetruecolor(width, height):

$image=imagecreate(100, 100);

Вот такая вот картинка. Если используешь imagecreatetruecolor, то картинка сразу становится черного цвета, а если imagecreate, то ее обязательно надо закрасить. Закрашивание можно осуществить двумя способами:

1. Обозначить цвет функцией imagecolorallocate (в случае создания картинки

функцией imagecreate, первый же вызов функции imagecolorallocate закрасит

картинку) и вызвать функцию imagefill для заполнения картинки цветом:

$red=0;

$green=255;

$blue=0;

$top=0;

$left=0;

$color=imagecolorallocate($image, $red, $green, $blue);

imagefill($image, $top, $left, $color);

2. Вызвать функцию imagefill и передать ей в качестве цвета шестнадцатеричное

значение (первая закраска у меня работает только при создании функцией

imagecreatetruecolor):

imagefill($image, 0, 0, 0x00FF00);

Ну, вот, наша картинка приобрела ядовито-зеленый цвет, но запускать пока рано.

Надо сначала наше творение генерировать и освободить память. Делаем это так:

imagepng($image); //можно imagegif, imagegejpg и тд

imagedestroy($image); //освобождаем память

Изображение создали, закрасили, теперь нарисуем монитор. Нам понадобятся

следующие функции:

imagearc($image, X, Y, Width, Height, Start, End, color) - рисует дугу с

центром в X и Y, ширина и высота элипса Width и Height, соответственно,

Start и End - начало и конец в градусах 0 находится в 3-х часах, color -

цвет;

imageline($image, X1, Y1, X2, Y2, color) - рисует линию с началом в X1 и Y1,

концом в X2 и Y2;

imagefill($image, X, Y, color) - заполнение цветом X и Y - точка закрытой

области для заливки;

imagefilledellipse($image, X, Y, Width, Height, color) - параметры имеют то

же значение, что и в функции imagearc;

imagettfbbox(size, angle, name, text) - определяет размеры текста, где

size - размер шрифта, angle - угол поворота текста, name - имя файла шрифта

(или путь к шрифту), text - текст;

imagettftext($image, size, angle, x, y, color, name, text) - выводит

надпись, параметры те же, что и в imagettfbbox и добавляются: картинка,

координаты левого нижнего угла и цвет.

Начало координат рисунка находятся в верхнем левом углу.

header('Content-type: image/png');

$image=imagecreatetruecolor(100, 100);

imagefill($image, 0, 0, 0x00FF00);

//Внешняя часть

imagearc($image, 10, 10, 10, 10, 180, 270, 0x000000); //верхний левый

imagearc($image, 90, 10, 10, 10, 270, 360, 0x000000); //верхний правый

imagearc($image, 90, 90, 10, 10, 0, 90, 0x000000); //нижний правый

imagearc($image, 10, 90, 10, 10, 90, 180, 0x000000); //нижний левый

imageline($image, 10, 5, 90, 5, 0x000000); //верх

imageline($image, 5, 10, 5, 90, 0x000000); //лево

imageline($image, 10, 95, 90, 95, 0x000000); //низ

imageline($image, 95, 10, 95, 90, 0x000000); //право

//Внутренняя часть

imagearc($image, 15, 15, 10, 10, 180, 270, 0x000000); //верхний левый

imagearc($image, 85, 15, 10, 10, 270, 360, 0x000000); //верхний правый

imagearc($image, 85, 85, 10, 10, 0, 90, 0x000000); //нижний правый

imagearc($image, 15, 85, 10, 10, 90, 180, 0x000000); //нижний левый

imageline($image, 15, 10, 85, 10, 0x000000); //верх

imageline($image, 10, 15, 10, 85, 0x000000); //лево

imageline($image, 15, 90, 85, 90, 0x000000); //низ

imageline($image, 90, 15, 90, 85, 0x000000); //право

//Закраска монитора

imagefill($image, 10, 10, 0xFFFFFF); //внешний квадрат

imagefill($image, 20, 20, 0x0000FF); //внутренний квадрат

//Дружелюбный интерфейс :))

imagefilledellipse($image, 35, 30, 6, 6, 0xFFFF00); //правый глаз

imagefilledellipse($image, 65, 30, 6, 6, 0xFFFF00); //левый глаз

imagearc($image, 50, 60, 60, 40, 0, 180, 0xFFFF00); //печенькопоедательное

//устройство

imagepng($image);

imagedestroy($image);

?>

В этом коде куча недостатков:

- я не дизайнер, так что на красоту не жалуйся :)

- код неоптимизирован

- код неудобен в использовании

Если хочешь, можешь оптимизировать, на то ты и программист. Теперь подпишем наше творение в стиле shareware, четко по центру. Для этого надо вставить следующие строчки:

$rect=imagettfbbox(10, 0, "arial.ttf", "TroneeX"); //размеры текста

$w=$rect[2]-$rect[0]; //ширина

$h=$rect[1]-$rect[7]; //высота

$x=(100-$w)/2; //отступ слева

$y=(100+$h)/2; //отступ справа

imagettftext($image, 10, 0, $x, $y, 0xFFFFFF, "arial.ttf", "TroneeX");//текст

Все! Шароварный монитор, поедающий печеньки, у нас готов. Переходим к

диаграммам.

Будем рисовать диаграмму посещений сайта. Счетчик я писать не буду, не мечтай.

Количество посетителей будем получать функцией rand([$min, $max]). Эта функция возвращает свободное значение между $min и $max. Поехали:

header('Content-type: image/png'); //заголовок

$image=imagecreatetruecolor(400, 200); //картинка 400х200

imagefill($image, 0, 0, 0x5588BB); //типа, бордюр...

//можно было и нормально, но

//прочти заголовок статьи и ты

//все поймешь :)

function DrawCount($count, $index) //функция рисует колонку

{

global $image;

imagefilledrectangle($image, (21+$index*10), 178, (21+$index*10+10), (178-$count*10), 0x336633);

imagefilledrectangle($image, (21+$index*10+1), 178, (21+$index*10+10-1), (178-$count*10+1), 0x338833);

}

function DrawHLine($no) //деления по горизонтали

{

global $image;

imageline($image, 15, (179-$no*10), 20, (179-$no*10), 0x5588BB);

}

function DrawVLine($no) //деления по вертикали

{

global $image;

imageline($image, (381-$no*10), 179, (381-$no*10), 184, 0x5588BB);

}

//интерфейс

imagefilledrectangle($image, 2, 2, 397, 197, 0x99CCFF);

imageline($image, 20, 20, 20, 179, 0x5588BB);

imageline($image, 20, 179, 380, 179, 0x5588BB);

for ($i=0; $i<17; $i++)

{

DrawHLine($i);

}

for ($i=0; $i<37; $i++)

{

DrawVLine($i);

}

for ($i=0; $i<36; $i++)

{

$count=rand(0, 16);

DrawCount($count, $i);

}

imagepng($image);

imagedestroy($image);

?>

Функция imagefilledrectangle($image, x1, y1, x2, y2, color) - рисует закрашенный прямоугольник. А все остальное просто, как два пальца об асфальт.

Категория: WEB | Добавил: X-SAM (2006-08-02) | Автор: Дмитрий Алин
Просмотров: 1324 | Рейтинг: 0.0

Всего комментариев: 0
Имя *:
Email *:
Код *:

Украинская Баннерная Сеть
Поиск по каталогу

Кнопки друзей

Статистика
Рейтинг сайтов Powered by MyPagerank.Net

Copyright DEBUGGER © 2007 Используются технологии uCoz