Работа с графикой в PHP.
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Лекция 5. Работа с графикой в PHP.
1. Введение
Язык программирования PHP позволяет работать не только с текстовой информацией
в различных форматах (например, HTML), но также включает в себя мощные средства
создания и обработки изображений. Например:
Создание кнопок с надписями, текст которых хранится в базе данных.
Графическое отображение статистических данных.
Создание различных графиков и диаграмм.
и т.д.
В этой лекции рассмотрим некоторые функции для работы с графикой библиотеки GD.
GD является внешней библиотекой, доступной в виде модуля PHP, которая
устанавливается автоматически.
2. Создание заголовка
По умолчанию, PHP автоматически добавляет один заголовок «Content-type: text/html»
в http-ответ, означающий, что результатом работы скрипта является HTML код
Например, такой скрипт:
Создаст такой http-ответ, который уйдет в программу-клиент (браузер):
$> php hello.php
Content-type: text/html
Hello world!
$> _
Заголовок содержит информацию для браузера и не отображается на экране.
1
Используемый по умолчанию заголовок Content-type: text/html показывает, что
выводится HTML код, который браузер должен обработать. Если изменить его скажем
на Content-type: text/plain, то браузер будет воспринимать документ просто как текст и
выводить его "как есть" Для вывода заголовков в PHP используется функция header().
Необходимо позаботится, чтобы вывести данные в нужном формате.
Примечание Web-сервер перед отправкой данных клиенту может добавлять и другие
заголовки помимо Content-type.
Создание изображений в PHP требует наличия библиотеки GD написанной Thomas
Boutell. Поддержка этой библиотеки включается при компиляции PHP с опцией --with-gd.
Для работы с TrueType шрифтами также может понадобиться библиотека FreeType
(http://www.freetype.org/). Установка обеих библиотек подробно описана в
соответствующей документации.
Создание изображения.
Генерация изображения состоит из следующих основных этапов:
Создание изображения (холста).
Отрисовка изображения.
Вывод полученной картинки в браузер, или сохранения в файл.
Уничтожение ресурса изображения.
Для создания изображения используется функция ImageCreate(). В качестве
аргументов функция принимает ширину и высоту изображения в пикселах и возвращает
идентификатор, который в дальнейшем используется при вызове функция для работы с
изображением (подробнее см. ниже).
Перед тем, как что-либо рисовать, необходимо зарегистрировать цвета, которые вы
собираетесь использовать. Для этого предназначена функция ImageColorAllocate(). Этой
функции передаются идентификатор изображения и три числа, задающие цвет (RGB - red,
green, blue). Функция возвращает идентификатор цвета, который используется в
последующих операциях отрисовки изображения.
2
Пример:
Существует большое количество функций отрисовки изображений. Полное их
рассмотрение выходит за настоящей лекции. Основные функции для выполнения
лабораторной работы представлены ниже.
Вывод (или сохранение в файл) изображения осуществляется вызовом
функции ImagePNG(), ImageJPEG() или ImageGIF() (и д.р.). ImagePNG() преобразует
внутреннее представление изображения в PNG файл и посылает его клиенту. Аналогично
работает и ImageGIF(), но используя формат GIF. Перед использованием
функций ImagePNG()
или ImageGIF()
необходимо
послать
соответствующий
заголовок Content-type
Формат
Заголовок
PNG
"Content-type: image/png"
GIF
"Content-type: image/gif"
Примечание: Заголовки относятся ко всему документу. То есть если вы послали
заголовок, показывающий, что вы выводите изображение, вы не можете выводить текст. А
после того, как вы вывели первый байт данных, заголовок уже нельзя изменить! Это
значит, что сначала нужно вызвать header() и только затем начинать вывод данных, иначе
вы получите сообщение об ошибке. Если вы не посылаете заголовок Content-type, PHP
автоматически посылает Content-type: text/html как только вы начинаете вывод данных.
3
Практическое использование функций библиотеки GD мы рассмотрим в описании
функций ниже.
После вызова imageGIF или imagePNG, изменения в изображение вносить уже нельзя,
так как оно уже было отправлено клиенту.
Если мы сохраняем изображение в файл, затем его можно вывести на экран при
помощи тэгов HTML. При это, заголовок «Content-type: image/png» НЕ НУЖНО.
4
3. Функции для выполнения лабораторной работы.
Ниже проводится описание основных функций для работы с графическими
изображениями в PHP, которые необходимы для выполнения лабораторной работы.
Полный список функций для работы с графикой можно получить из раздела
«Используемые источники».
imagecreate
imagecreate — Создание нового изображения
Описание ¶
imagecreate ( int $width , int $height ) : resource
imagecreate() возвращает идентификатор изображения, представляющего из себя
пустое изображение заданного размера.
Список параметров ¶
width - Ширина изображения.
Height - Высота изображения.
Возвращает ресурс изображения в случае успеха, или FALSE в случае ошибки.
Результатом выполнения примера является изображение с текстом.
5
ВНИМАНИЕ! В заголовке указано, что все, что попадет в браузер, является
изображением в формате PNG. При этом невозможно работать с обычным текстом
(например, при помощи echo). Подробности смотрите в описании функции imagepng.
imagepng
imagepng — Вывод PNG изображения в браузер или файл
Описание ¶
imagepng ( resource $image [, mixed $to = NULL [, int $quality = -1 [, int $filters = -1 ]]] )
: bool
Выводит или сохраняет в файл PNG изображение.
Список параметров ¶
image - Ресурс изображения, возвращаемый одной из функций создания изображений,
например, такой как imagecreatetruecolor().
to - Путь для сохранения файла. Если не установлен или равен NULL, изображение
будет выведено в поток вывода в бинарном виде.
Quality - Степень сжатия: от 0 (нет сжатия) до 9. По умолчанию (-1) используется
значение по умолчанию сжатия zlib.
filters - Позволяет уменьшить размер PNG файла. Это битовая маска, значением
которой может быть комбинация констант PNG_FILTER_XXX. Для включения или
выключения
всех
фильтров
удобно
воспользоваться
константами PNG_NO_FILTER или PNG_ALL_FILTERS соответственно. Значение по
умолчанию (-1) отключает фильтрацию.
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения
ошибки.
Пример: ¶
Обратите внимание, что в функции imagepng указан второй аргумент. Т.е. эта функция
сохраняет изображение в файл, который мы выводим на экран браузера следующей
строкой. В этом случае мы можем работать с с обычным текстом (например, при помощи
echo).
imagecolorallocate
imagecolorallocate — Создание цвета для изображения
Описание ¶
imagecolorallocate ( resource $image , int $red , int $green , int $blue ) : int
Возвращает идентификатор цвета в соответствии с заданными RGB компонентами.
imagecolorallocate() должна вызываться для создания каждого цвета, который будет
использоваться в изображении image.
Первый вызов imagecolorallocate() задает цвет фона в палитровых изображениях изображениях, созданных функцией imagecreate().
Список параметров ¶
image - Ресурс изображения, возвращаемый одной из функций создания изображений,
например, такой как imagecreatetruecolor().
red - Значение красного компонента цвета.
green - Значение зеленого компонента цвета.
7
blue - Значение синего компонента цвета.
Эти аргументы могут принимать либо целочисленные значение в диапазоне от 0 до
255, либо шестнадцатеричные в диапазоне от 0x00 до 0xFF.
Возвращаемые значения ¶
Идентификатор цвета, либо FALSE в случае возникновения ошибки.
Пример использования imagecolorallocate():
imageline
imageline — Рисование линии
Описание ¶
imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color ) : bool
Рисует линию соединяющую две точки.
Список параметров ¶
8
image - Ресурс изображения, возвращаемый одной из функций создания изображений,
например, такой как imagecreatetruecolor().
x1 - x-координата первой точки.
y1 - y-координата первой точки.
x2 - x-координата второй точки.
y2 - y-координата второй точки.
color - Цвет линии. Идентификатор цвета, созданный функцией imagecolorallocate().
Возвращаемые значения ¶
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения
ошибки.
imagerectangle
imagerectangle — Рисование прямоугольника
Описание ¶
imagerectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color ) : bool
imagerectangle() рисует прямоугольник с заданными координатами углов.
Список параметров ¶
image - Ресурс изображения, возвращаемый одной из функций создания изображений,
например, такой как imagecreatetruecolor().
x1 - Верхняя левая x координата.
y1 - Верхняя левая y координата 0, 0 - левый верхний угол изображения.
x2 - Нижняя правая x координата.
y2 - Нижняя правая y координата.
Color - Идентификатор цвета, созданный функцией imagecolorallocate().
9
Возвращаемые значения ¶
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения
ошибки.
Пример использования imagerectangle():
imagefilledrectangle
imagefilledrectangle — Рисование закрашенного прямоугольника
Описание ¶
imagefilledrectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
: bool
Создает прямоугольник закрашенный цветом color в заданном изображении image.
Начальная точка 1, конечная 2. 0,0 - левый верхний угол изображения.
10
Список параметров ¶
image - Ресурс изображения, возвращаемый одной из функций создания изображений,
например, такой как imagecreatetruecolor().
x1 - x-координата точки 1.
y1 - y-координата точки 1.
x2 - x-координата точки 2.
y2 - y-координата точки 2.
color - Цвет заливки. Идентификатор цвета, созданный функцией imagecolorallocate().
Возвращаемые значения ¶
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения
ошибки.
Пример использования imagefilledrectangle():
imagestring
imagestring — Рисование строки текста горизонтально
Описание ¶
11
imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color ) : bool
Рисует текст string на заданных координатах.
Список параметров ¶
image - Ресурс изображения, возвращаемый одной из функций создания изображений,
например, такой как imagecreatetruecolor().
font - Может принимать значения 1, 2, 3, 4, 5 для встроенных шрифтов в кодировке
latin2 (более высокое число соответствует большему шрифту) или любому из ваших
собственных идентификаторов шрифтов, зарегистрированных с помощью imageloadfont().
x - x-координата верхнего левого угла.
y - y-координата верхнего левого угла.
string - Строка текста.
color - Идентификатор цвета, созданный функцией imagecolorallocate().
Возвращаемые значения ¶
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения
ошибки.
imagearc
imagearc — Рисование дуги
Описание ¶
imagearc ( resource $image , int $cx , int $cy , int $width , int $height , int $start , int $end , i
nt $color ) : bool
imagearc() рисует дугу окружности с заданными координатами центра.
Список параметров ¶
image - Ресурс изображения, возвращаемый одной из функций создания изображений,
например, такой как imagecreatetruecolor().
12
cx - x-координата центра.
cy - y-координата центра.
width - Ширина дуги.
height - Высота дуги.
start - Угол начала дуги в градусах.
end - Угол окончания дуги в градусах. 0° соответствует положению 3 часа, дуга
рисуется по часовой стрелке.
color - Идентификатор цвета, созданный функцией imagecolorallocate().
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения
ошибки.
Пример: ¶
Используемые источники.
1. Руководство по PHP. https://www.php.net/manual/ru/index.php
2. PHP. https://habr.com/ru/hub/php/
3. Учебник по PHP. https://htmlacademy.ru/tutorial/php
4. PHP.SU. http://www.php.su/
14