Динамическое изображение на PHP

Динамическое изображение PHP

На многих популярных интернет-ресурсах используются динамические изображения (сигнатуры, графики и просто генерированные изображения). В этой статье мы разберём, как же их правильно создавать. Мы создадим не просто php изображение, а подключим к нему GET запрос. Для начала создадим обычный PHP файл и добавим к нему header типа png.

<?php
header ("Content-type: image/png");
?>

Далее обозначим главный холст $im

$HeightImage = 100;
$WidthImage = 468;  

$im = imagecreatetruecolor ($WidthImage, $HeightImage) or die('Error');
imagefill($im, 0, 0, 0xFFFFFF); 

ImagePng ($im);
imagedestroy($im);

Из кода видно, что $im будет главным фоном, также цвет белым (0xFFFFFF). Нужно помнить, что цвет при создании фона записывается с указание 0x, без этого у вас код работать не будет, а будет отображаться ошибка.

Здесь нет возможности вписывать каждый текст в виде #FFFFFF, поэтому используют ImageColorAllocate. Пример использования:

$ColorBlack = ImageColorAllocate ($im, 0, 0, 0); // черный

Как ранее упоминалось, мы будем присваивать нашему изображению на PHP уникальный параметр. Назовём его $name — вводим логин пользователя. На этом этапе нужно определиться, как мы будем получать данные с сервера. Самый легкий путь — это json запрос. А раз это небольшой урок, то получать информацию будем с twitch.tv. Адрес запроса будет примерно такой https://api.twitch.tv/kraken/channels/$name. Давайте разберём в коде.

$name = $_GET['name']';
$json_array = json_decode(file_get_contents('https://api.twitch.tv/kraken/channels/'.$name));

if ($json_array-&gt;error != 'Not Found')
{
$game = $json_array-&gt;game;
$display_name = $json_array-&gt;display_name;
$status = $json_array-&gt;status;
}
else
{
echo 'Пользователь не найден!';
}

Как видно в коде, мы будем проверять, есть ли данный пользователь и, если он есть, выводим данные о канале. Теперь вернёмся к изображению и набросаем небольшой код. Если что-то будет непонятно, пишите в комментариях я попытаюсь всё объяснить. Как обрезать изображение на PHP можно узнать, перейдя по ссылке.

<?php
/* START Работа с программной частью*/
$name = $_GET['name'];
$json_array = json_decode(file_get_contents('https://api.twitch.tv/kraken/channels/'.$name));

if ($json_array-&gt;error != 'Not Found')
{
$game = $json_array-&gt;game;
$display_name = $json_array-&gt;display_name;
$status = $json_array-&gt;status;

/* START Работа с изображением*/
header ("Content-type: image/png"); 

$HeightImage = 100;
$WidthImage = 468;  

$font = 'ARICYR.ttf';
$logo = imagecreatefrompng ('http://syscoding.ru/source/image/logo1.png');

$im = imagecreatetruecolor ($WidthImage, $HeightImage) or die('Error');
imagefill($im, 0, 0, 0xFFFFFF); 

$ColorWhite = ImageColorAllocate ($im, 255, 255, 255);
$ColorBlack = ImageColorAllocate ($im, 0, 0, 0);
$ColorGray1 = ImageColorAllocate ($im, 49, 49, 39);
$ColorGray2 = ImageColorAllocate ($im, 163, 157, 139);
$ColorRed = ImageColorAllocate ($im, 184, 41, 41);

imagefilledrectangle($im, 468, 19, 0, 28,$ColorGray1);
imagefilledrectangle($im, 468, 28, 0, 31,$ColorGray2);

imagettftext ($im, 12, 0, 3, 15, $ColorRed, $font, $display_name.' ['.$game.']');

imagettftext ($im, 9, 0, 103, 60, $ColorBlack, $font, 'Переменная: %.%');
imagettftext ($im, 9, 0, 103, 71, $ColorBlack, $font, 'Переменная: %.%');
imagettftext ($im, 9, 0, 103, 82, $ColorBlack, $font, 'Переменная: %.%');
imagettftext ($im, 9, 0, 103, 93, $ColorBlack, $font, 'Переменная: %.%');

imagettftext ($im, 9, 0, 303, 60, $ColorBlack, $font, 'Переменная: %.%');
imagettftext ($im, 9, 0, 303, 71, $ColorBlack, $font, 'Переменная: %.%');
imagettftext ($im, 9, 0, 303, 82, $ColorBlack, $font, 'Переменная: %.%');
imagettftext ($im, 9, 0, 303, 93, $ColorBlack, $font, 'Переменная: %.%');

imagettftext($im, 9, 90, 465, 101, $ColorBlack, $font, 'syscoding.ru');

imagealphablending($logo, false);
imagesavealpha($logo, true);

imagecopy($im, $logo, 0, 33, 0, 0, imagesx($logo), imagesy($logo));

ImagePng ($im);
imagedestroy($im);
imagedestroy($logo);
}
else
{
echo 'User Not Found';
}
?>

Результат можно посмотреть, перейдя по ссылке.

Конечно, можно было бы создать условие и выводить логотип для каждой игры свой, но, я думаю, это сделать легко, и вы осилите это сами. Исходника не будет, так как весь файл предоставлен на сайте. В следующем уроке мы разберем авторизацию на DLE при помощи PHP. Желаю удачных проектов!

0
Поделиться
Mentor

Уже более четырех лет интернет - моё хобби. Больше всего мне удалось освоить веб-дизайн. В настоящее время активно занят продвижением сайтов.

1 коммент.

  1. Mentor

    Материал о динамических изображениях средствами PHP будет полезен для тех, кто занимается разработками своей CMS на PHP.

Оставить комментарий

Войти с помощью: 
Яндекс.Метрика