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, созданию графиков и рисованию изображений на этом или других языках программирования, то вы можете написать мне – за небольшую плату я вам с удовольствием помогу.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

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




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Программа "Слайдшоу"
Переход с инстаграма на сайт, ошибки https и перенос на другой хостинг
Текущая дата и разница дат в VBA