На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

PHP изображения, графики


Понадобилось тут для одного заказчика сделать графическое отображение информации из базы данных. Поискал онлайн сервисы: есть, но все не совсем то. Пришлось, писать свой. Получилось интересно. Итак, давайте научимся рисовать с помощью PHP простые изображения и графики.

Первым делом надо дать понять браузеру, что это не обычный файл php, а картинка. Точнее, надо отображать как картинку. Для этого ставим заголовок:

header ("Content-type: image/png");
Далее устанавливаем настройки:

$img_width = 1200;
$img_height = 600;
$img = imagecreatetruecolor($img_width, $img_height);

$black = imagecolorallocate($img, 0, 0, 0);
$red   = imagecolorallocate($img, 255, 0, 0);

imagefill($img, 0, 0, $black);
$font = 'PassionOne-Regular.ttf';
В данном коде мы задаем размеры изображения, инициализируем его, задаем цвета, которыми будем пользоваться для рисования и заливаем его черным цветом. Также в последней строке ставим в переменную шрифт, которым будем писать (шрифт находится в одном каталоге с файлом).

Теперь переходим к непосредственно рисованию. Для него мы используем две функции: imagesetpixel() и imagettftext(). Первая рисует точку, вторая – текст.

Параметры:

imagesetpixel ( resource $image , int $x , int $y , int $color )
imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
Ниже код, который в цикле берет из базы данных нужную информацию и располагает её на холсте:

date_default_timezone_set("Europe/Moscow");
for ($i=1;$i<300;$i++){
$query ="SELECT * FROM `found` WHERE `id`='".$i."'";
if ($result = $conn->query($query)) {
$row = $result->fetch_assoc();
$coun = 500 - $row['coun']/3;
$timestamp=$row['dat'];
$dat = gmdate("H:i", $timestamp);
imagesetpixel($img,$i*4,$coun,$white);
if ($i%21==0) {	
imagettftext($img, 10, 0, $i*4, $img_height*10/20, $red, $font, $dat);		
}
}
}
Здесь мы берем 300 значений и ставим их точками на картинке. При этом, так как направление оси Y идет снизу вверх, а мы привыкли наоборот видеть на экранах, то значение вычитаем из 500. Также ставим числовые значения времени (переводим еще из временной отметки в часы-минуты). Ну и не забываем временную зону – время сервера может отличаться от нашего.

imagepng($img);
imagedestroy($img);
Ну и в конце собственно создаем изображение и удаляем его из памяти. Получается вот такая картинка:



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




тегизаметки, php, графики, изображения

Читайте также:




Шаблонизатор Smarty и PHP, или пробуем смотреть на проблему шире
Проверка параметров SSL вашего сервера


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.