|| разделы:: | |
|| поиск по сайту:: | |
|| реклама:: | |
|| новости почтой:: | |
Популярные статьи |
|
Hot 5 Stories |
|
|| рекомендуем:: |
|
| |
Создание диаграммы на основе переданых данных
Рассмотрим пример скрипта с описанием,который позволяет динамически создавать диаграмму на основе переданых данных имеющую вид:
Такой скрипт,например будет очень удобен при создании статистики у вас на сайте (хотя его приаменения могут быть более разнообразными).
Вы должны передать в этот скрипт 3 параметра : title,width и data.
- title - название диаграммы (в примере "foo")
- width - длина картинки в пикселях.
- data - переменные и значения по которым строится диаграмма
Удобство скрипта в том,что
количество передаваемых переменных не ограничено
Внимание! GD должна быть включена
<?
//Название
$title = urldecode($title);
//Данные
$data = urldecode($data);
//Начальная точка построения диаграммы
$x = 40;
$y = 30;
$right_margin= 20;
$bar_width = 10;
$total = 0;
$max = 0;
$unit = (($width-$x)-$right_margin) / 100;
$items= explode("^^",$data);
//Сумма
while (list($key,$item) = each($items))
{
if ($item)
{
$pos = strpos($item,"^");
$value = substr($item,$pos+1,strlen($item));
$total = $total + $value;
}
}
reset($items);
//Подсчет высоты диаграммы
$height = sizeof($items) * ($bar_width + 20);
Header("Content-type: image/gif");
$im = imagecreate($width,$height);
// Задание цвета
$white=ImageColorAllocate($im,255,255,255);
$yellow=ImageColorAllocate($im,240,240,70);
$blue=ImageColorAllocate($im,0,64,128);
$bar=ImageColorAllocate($im,64,100,168);
//Задание фона
ImageFilledRectangle($im,0,0,$width,$height,$blue);
//Рисуем заголовок
$title_x = (imagesx($im)-7.5*strlen($title))/2;
ImageString($im,3,$title_x,4,$title,$white);
//Рисуем дату
ImageString($im,1,$width-150,17,date("D M jS Y h:i:s A"),$white);
//Линия
Imageline($im,$x,$y-5,$x,$height-15,$bar);
//Прорисовываем данные
while (list($key,$item) = each($items))
{
if ($item)
{
$pos = strpos($item,"^");
$item_title = substr($item,0,$pos);
$value = substr($item,$pos+1,strlen($item));
//Выводим в процентах
ImageString($im,3,$x-25,$y-2,intval(round(($value/$total)*100))."%",$yellow);
$px = $x + ( intval(round(($value/$total)*100)) * $unit);
ImageFilledRectangle($im,$x,$y-2,$px,$y+$bar_width,$bar);
ImageString($im,2,$x+5,$y+9,$item_title,$white);
ImageRectangle($im,$px+1,$y-2,($x+(100*$unit)),$y+$bar_width,$bar);
//Выводим отношения
ImageString($im,1,($x+(100*$unit))-40,$y+12,$value."/".$total,$white);
}
$y=$y+($bar_width+20);
}
// Показываем созданую диаграму
ImageGif($im);
// Очищаем память:
ImageDestroy($im);
?>
|
Вы также можете вызавать картинки в самом html документе,при помощи:
<img src="graph.php?title=foo&width=500&data=a^15^^b^20^^">
Ну вот и все.Удачи в ваших программыных изысканиях!
Автор статьи: Тарасенко Сергей Информационный клуб Webмастеров "Kwazar"
wc@newmail.ru
|
::::: NAS пишет 14.05.2001 @ 15:04 | |
::::: BuG пишет 17.05.2001 @ 04:05 | |
А для какой версии GD это дело работает? Насколько я понял, бегло пробежавшись по коду, используется Гиф. А в новых версиях он не поддерживается, так что нужно качать 1.19-ю версию???
|
::::: BuG пишет 19.05.2001 @ 04:25 | |
И вообще, как устанавливать этот ваш ГД??? Ответьте, будьте добры, ато скачать то я его скачал, но мне кажется его еще и прописать куда-то надо...
|
to BuG: библиотека GD - это dll файл в папке extensions в PHP. Для её включения надо отредактировать php.ini - у меня например это 252 строка - там надо разкомментить строчку, где написано extension=php_gd.dll (вобщем это раздел Dynamic Extensions и там чуть ниже есть список, где и есть эта строка с gd). А по поводу версии - какая разница, gif или png ? Для пользователей сайта www.scriptik.ru доступен счетчик, так он работает отлично, используя png.
|
::::: Slach пишет 20.05.2001 @ 12:10 | |
::::: Eraser пишет 04.07.2001 @ 06:47 | |
Интересен такой момент: как добавить в GD поддержку русских фонтов. Может кто знает. Подскажите.
|
::::: d1gg3r пишет 12.09.2001 @ 12:43 | |
как сделать форму запроса для этого скрипта?
если не в лом пошлите мне =)), на d1gg3r@mail.ru
заранее спасибо...
|
::::: Misha пишет 15.09.2001 @ 11:42 | |
Как писать по русски при в диаграмме?
|
::::: d1gg3r пишет 16.09.2001 @ 03:22 | |
to Misha: да вроде никак, GD кирилицу не поддерживает, =((,
|
::::: Albert пишет 05.11.2001 @ 09:24 | |
Добрый день ! Спасибо за статью - очень понравилась и пригадилась.
Возник вопрос. А именно можно ли вставить динамически формируемое изображение в страницу.
То есть есть скрипт php, который формирует страничку , а в этой страничке надо вставить картинку.
вариант <img src="gif.php"> не очень устраивает, так как слишком много данных надо передавать. Можно ли вставить картинку по-другому, а именно, нечто типа
//main skript
...
...
<img src=
// dinamic create image function
...
....
>
Заранее спасибо
|
::::: viper пишет 05.02.2002 @ 10:48 | |
смущает немного вот эти переменные как их можно привести к другому ввиду, так что бы была возможность подставить сюда значения для диаграммы, в таком виде как сейчас скрипт не выводит диаграммы пробовал подключать и в html страницу
$title = urldecode($title);
//Данные
$data = urldecode($data);
|
::::: Luda пишет 08.05.2003 @ 16:32 | |
При использовинии GD в C++, есть возможность научить ее говорить порусски, может кто найдет как это сделать в PHP, если кто знает поделитесь опытом
|
::::: shicoy пишет 23.07.2003 @ 03:17 | |
Надо прикрутить к GD поддержку TTF скриптов (см. мануал по GD), после чего можно смело писать по-русски. Я такое делал примерно год назад, так что на вскидку не помню, но если очень надо, могу написать статью на эту тему.
|
::::: shicoy пишет 23.07.2003 @ 03:19 | |
ТТF шрифтов а не скриптов, утро скоро, опечатался
|
Подскажите, плз, как прикрутить FreeType к PHP? Тоже, вроде, вариант по выводу кириллицы в PNG/JPEG....
|
::::: tibalt пишет 20.02.2004 @ 11:18 | |
на www.phpclub.ru в форуме написано про русский язык в ГД
|
::::: Max пишет 04.07.2004 @ 01:05 | |
Есть вопрос насчет символа ^
кто может подсказать что он значит?
|
::::: Max пишет 04.07.2004 @ 01:06 | |
Есть вопрос насчет символа ^
кто может подсказать что он значит?
|
::::: Cro$$ пишет 06.01.2005 @ 23:59 | |
Насчёт поддержки русского текста.
Читайте комментарии:
...
// Преобразование Windows 1251 -> Unicode
function win2uni($s)
{
$s = convert_cyr_string($s,'w','i'); // преобразование win1251 -> iso8859-5
// преобразование iso8859-5 -> unicode:
for ($result='', $i=0; $i<strlen($s); $i++) {
$charcode = ord($s[$i]);
$result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];
}
return $result;
}
//Создаём картинку 214x90
$image = imagecreate(214,90);
//Определяем белый цвет
$white = imagecolorallocate ($image, 255, 255, 255);
//Определяем синий цвет
$blue = imagecolorallocate ($image, 0, 0, 255);
//Текст с использованием функции, написаной выше
$text = win2uni('Синий русский текст');
//Выводим текст с использованием шрифта comicbd.ttf
//Размер - 14
//Угол наклона - 0
//Координаты нижнего левого угла текста - (20,50)
//Цвет - синий
//Ф-я getcwd() - возвращает католог, где лежит данный скрипт.
//Скопируйте шрифт в этот каталог !!!
imagettftext($image, 14, 0, 20, 50, $blue, getcwd()."/arial.ttf", $text);
Header("Content-type: image/png");
//Выводим картинку в вормате PNG
ImagePng($image);
//Освобождаем память, выделенную для изображения
ImageDestroy($image);
...
|
|
::::: Паша пишет 01.04.2008 @ 14:08 | |
Спасибо, очень помогла данная статья. Хорошо, когда есть люди, готовые просто и понятно объяснить... респект
|
| |