базовый курс

ГРУППА КУРСА

Создание изображения

PHP позволяет динамически создавать изображения. Конечно, не имеет смысла рисовать на PHP какие-то сложные картинки. Для этого есть графические редакторы. Зато можно рисовать изображения, привязанные к контенту. Прежде всего, графики. Это основная задача, решаемая с помощью рисования. Хотя можно создавать и другие изображения.

Функции для создания изображения

Функция imageCreateTrueColor() создаёт новое изображение и возвращает дескриптор для дальнейшей работы с ним. На этом этапе картинка не отображается, она есть только в программе

ImageCreateTrueColor (ширина, высота)

При создании изображение представляет собой прямоугольник чёрного цвета.

3
$image = imageCreateTrueColor(200, 70);

В примере создано изображение размером 200 на 70 пикселей.

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

Есть ещё функция imageCreate(). Она работает почти также, но создаёт не полноцветное, а палитровое изображение. В нём используются не все цвета, а только набор доступных цветов. Работать с ним неудобно.

Вывод картинки

Чтобы сервер правильно отправлял картинку, в скрипте должен быть заголовок ContentType с указанием MIME-типа контента. Напомню, что во всех примерах этого учебника во 2 строке предполагается установка типа text/html. Но для изображений он другой. В примерах этой главы ContentType будет указан.

Для вывода картинки в браузер или в файл используется несколько функций, каждая из которых создаёт изображение своего формата. Например imageJpeg() выводит картинку в формате jpeg.

imageJpeg (изображение, файл, качество)

Параметры:

изображение - дескриптор изображения

файл - путь к файлу. Если NULL или не указан, то изображение выводится в поток.

качество - от 0 до 100. Влияет на размер файла. По умолчанию 75

Вот пример скрипта, который создаёт картинку и выводит на экран:

PHP код:

1
2
3
4
5
6
7
<?php
header('Content-type: image/jpeg');
$image = imageCreateTrueColor(200, 70);
$imcolor = imageColorAllocate($image, 10, 20, 250);
imageFilledRectangle($image, 0, 0, 199, 69, $imcolor);
imagejpeg($image);
?>

Комментарии:

2 - Устанавливаем MIME-тип контента: изображение в формате jpeg

3 - Создаём изображение

4, 5 - Рисуем синий прямоугольник. Изучим это позже

6 - Выводим на экран

Функция imagepng() выводит картинку в формате PNG.

imagepng (изображение, файл, сжатие, фильтры)

Параметры:

изображение - дескриптор изображения

файл - путь к файлу

сжатие - от 0 до 9. По умолчанию установлено 0

фильтры - указываются с помощью констант, в том числе PNG_NO_FILTER и PNG_ALL_FILTERS

Если картинка выводится в поток, то сжатие и фильтры указываются обязательно.

Функция imagegif() выводит в формате GIF.

imagegif (изображение, файл)

Функция imagewbmp() выводит в формате WBMP.

imagewbmp (изображение, файл, верхний слой)

Параметры:

изображение - дескриптор изображения

файл - путь к файлу

верхний слой - позволяет указать цвет верхнего слоя. О создании цвета рассказывается в следующей теме

Все функции работают по одному принципу: если путь к файлу указан, то картинка сохраняется в файл. А если установлен NULL или не указан, то рисунок выводится в поток.

Картинка может занимать много памяти. Для освобождения ресурсов сервера нужно уничтожать изображение после вывода. Это делается с помощью функции imageDestroy().

7
imageDestroy($image);