200 likes | 350 Views
Работа с графическими библиотеками. Лекция 8. Общие принципы. Протокол HTTP , как известно, может возвращать не только HTML- код, но и двоичные данные, включая графическую информацию
E N D
Работа с графическими библиотеками Лекция 8
Общие принципы • Протокол HTTP, как известно, может возвращать не только HTML-код, но и двоичные данные, включая графическую информацию • Точно также интерпретатор языка PHP способен динамически генерировать не только HTML-код, но и изображения.
Графические библиотеки в Web • GD Graphics Library • GraphicsMagick • ImageMagick
Поддерживаемые форматы графической библиотеки GD • Вышеперечисленные форматы поддерживаются «из коробки». • Благодаря расширениям, могут поддерживаться и другие форматы: BMP, TIFF, SWF и др.
Этапы генерации изображения • Установить тип содержимого как «изображение», чтобы браузер смог интерпретировать изображение должным образом • Создать новое пустое изображение, установив нужную ширину и высоту • Отрисовать необходимые детали изображения • Сохранить окончательный вариант изображения и передать его в браузер • Очистить память, которая использовалась для создания и хранения изображения • Организовать отображение рисунка из файла image.php
Установка HTTP-заголовка • Для генерирования изображения прямо в браузер клиента, необходимо в PHP-сценарии установить специальный HTTP-заголовок, указывающий на MIME-тип изображения. Для картинки формата PNG: header("Content-Type: image/png");
Создание пустого изображения // Определяем размеры изображения // 125pxширина (width), 125px высота (height) $image=imagecreate(125,125); // Альтернатива: полноцветное изображение $image=imagecreatetruecolor(125,125);
Идентификатор цвета Общий вид функции: intimagecolorallocate(resource $image,int$red,int$green,int$blue) • Возвращает идентификатор цвета в соответствии с заданными RGB компонентами. • imagecolorallocate() должна вызываться для создания каждого цвета, который будет использоваться в изображении $image. // создадим несколько цветов // первый определённый цвет будет фоновым, // если была использована функция imagecreate() $scarlet=imagecolorallocate($image,255,36,0); $white=imagecolorallocate($image,255,255,255); $black=imagecolorallocate($image,0,0,0);
Фоновая заливка boolimagefill(resource $image,int$x,int$y,int$color) • Производит заливку монотонной области, начиная с заданных координат (верхний левый угол имеет координаты 0, 0), цветом $color в изображении $image.
Генерация изображения в формате PNG boolimagepng(resource $image[, string $filename[,int$quality]]) • $image– ресурс изображения, полученный одной из функций создания изображений. • $filename– путь для сохранения файла. Если не установлен или равен NULL, изображение будет выведено в поток вывода в бинарном виде. • $quality– степень сжатия: от 0 (нет сжатия) до 9.
Генерация изображения в формате PNG // Сохраняем файл в формате PNG и выводим его в стандартный поток imagepng($image);
Высвобождение памяти boolimagedestroy(resource $image) • Освобождает память, занятую изображением $image. • Пример: // Чистим использованную памятьimagedestroy($image);
Вариант тестовой программы <?php header("Content-Type: image/png"); // Определяем размеры изображения // 125pxширина (width), 125px высота (height) $image=imagecreatetruecolor(125,125); // создадим несколько цветов $scarlet=imagecolorallocate($image,255,36,0); $white=imagecolorallocate($image,255,255,255); $black=imagecolorallocate($image,0,0,0); // Заливка фона алым цветом imagefill($image,0,0,$scarlet); // Сохраняем файл в формате PNG и выводим его imagepng($image); // Чистим использованную память imagedestroy($image); ?>
Работа с текстом arrayimagettftext(resource $image, float $size, float $angle,int$x,int$y,int$color, string $fontfile, string $text)
Работа с текстом arrayimagettftext(resource $image, float $size, float $angle,int$x,int$y,int$color, string $fontfile, string $text) Наносит текст $text поверх изображения, используя TrueType шрифт. • $image – ресурс изображения • $size – размер шрифта в пунктах (GD2) • $angle – угол в градусах, 0 градусов означает расположение текста слева направо. Положительные значения означают поворот текста против часовой стрелки.
Работа с текстом arrayimagettftext(resource $image, float $size, float $angle,int$x,int$y,int$color, string $fontfile, string $text) Наносит текст $text поверх изображения, используя TrueType шрифт. • $x, $y – координаты x и y определяют отправную точку для первого символа текста (конкретно, левый нижний угол символа). • $color – индекс цвета. • $fontfile – путь к файлу TrueType шрифта. • $text – текстовая строка в кодировке UTF-8.
Использование текста в графике <?php header("Content-type: image/png"); $image=imagecreatetruecolor(190,190); $scarlet=imagecolorallocate($image,255,36,0); $yellow=imagecolorallocate($image,251,236,93); $black=imagecolorallocate($image,0,0,0); imagefill($image,0,0,$scarlet); // Определим шрифт: Comic Sans Serif $font="comic.ttf"; $text="Доброе утро!"; // Тень imagettftext($image,20,-45,31,41,$black,$font,$text); // Текст imagettftext($image,20,-45,30,40,$yellow,$font,$text); imagepng($image); imagedestroy($image); ?>
Использование текста в графике • Результат:
Создание изображения из файла resource imagecreatefrompng(string $filename); • Возвращает идентификатор изображения, представляющего изображение полученное из файла с заданным именем.
Полезные ссылки • http://php.net/manual/ru/book.image.php • http://www.php.su/functions/?cat=image • http://ruseller.com/lessons.php?rub=37&id=439