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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.