Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Отображение текста и фигур на изображениях в PHP

by
Difficulty:IntermediateLength:MediumLanguages:

Russian (Pусский) translation by Alexey Pyltsyn (you can also view the original English article)

В предыдущей статье мы сосредоточились на загрузке и управлениями изображениями с помощью PHP. Мы научились, как поворачивать, изменить размер и масштаб или зеркально переворачивать изображение. Мы также узнали о различных фильтров и о матрице конволюции. Эти обучающие статьи также охватывает некоторые практические применения библиотеки GD, такие как изменение всех изображений в директории или добавление водяных знаков на несколько изображений одновременно.

Помимо использования GD для управления обычными изображениями, мы можем создать наш собственный с нуля. Различные функции в библиотеке могут использоваться для рисования основных фигур, таких как эллипсы, круги, прямоугольники, многоугольники и простые линии. С применением небольшой математики, эти фигуры могут создавать приятные узоры. Также есть функции для рисования текста на отрисованном изображении, что открывает много возможностей.

Эта статья научит вас, как рисовать основные формы в PHP и как осуществлять отрисовку текста, используя ваш любимый шрифта.

Рисования основных фигур в PHP с GD

Мы узнаем об основных фигур в этом разделе, а затем рассмотрим толщину линии, кисти и стили линий позже.

Рисование линии

Можно нарисовать простую прямую линии между двумя заданными точками, используя функцию imageline ($image, $x1, $y1, $x2, $y2, $color). Параметр $image является ресурсом изображения, которые будут были созданы ранее с помощью функций как imagecreatetruecolor() или imagecreatefromjpeg(). Мы будем использовать imagecreatetruecolor() на протяжении всей статьи для создания новых изображений с нуля. Функция нарисует горизонтальную линию, если $y1 равно $y2. Аналогичным образом он нарисует вертикальную линию, если $x1 равно $x2.

Рисование кругов и дуг

Функция imagearc($image, $cx, $cy, $width, $height, $start, $end, $color) можно рисовать дуги с помощью $cx и $cy в качестве его центра. Параметры $width и $height определяют размер дуги на разных осях. Параметры $start и $end определяют начальный и конечный углы дуги в градусах. Если вы хотите нарисовать полные дуги от 0 до 360 градусов, можно использовать альтернативную функцию imageellipse($image, $cx, $cy, $width, $height, $color).

Рисование прямоугольников и многоугольников

Вы можете рисовать прямоугольники поверх изображения, используя функцию imagerectangle($image, $x1, $y1, $x2, $y2, $color). Значения $x1 и $y1 определяют верхний левый угол прямоугольника. Значения $x2 и $y2 определяют правый нижний угол. Существует также функция imagepolygon($image, $points, $num_points, $color), которая может создать многоугольник с любым количеством сторон или точек. Параметр $points представляет собой массив, в котором два элемента соединены вместе, чтобы получить координаты определенной точки.

Еще одна функция под названием imageopenpolygon(), которая была добавлена в PHP 7, не рисует линию между первой и последней точкой.

Собираем все вместе для создания изображения

В следующем примере мы использовали все эти функции для создания изображения с домом, солнцем и землей.

Здесь важно только выяснить значение разных координат. Я хотел бы рисовать все в относительном размером исходного изображения, поэтому я использовал переменные $img_height и $img_width для вычисления координат различных точек.

Line Drawing in PHP GD

Контроль толщины линии, стиля и заполнения цвета

Изображение выше имеет пару проблем, такие как очень тонкие линии и отсутствие окраски. Все эти проблемы могут быть исправлены с помощью функций, таких как imagesetthickness() и imagefilledrectangle().

Толщина линии

Функция imagesetthickness($image, $thickness) устанавливает толщину отрисованных линий при рисовании, прямоугольников, многоугольников, други т.д. Например, установка $thickness на значение 5 сделает любую фигуру с помощью imagerectangle(), imagearc(), imagepolygon() и т.д. в 5 пикселей толщиной.

Рисование закрашенных фигур

Каждая функция рисования также имеет версию с заполнением цвета, которая заполняет конкретную фигуру с заданным цветом. Например, imagefilledrectangle() окрасит отрисованный прямоугольник с заданным цветом.

Использование кисти

Один очень полезная функция GD — imagesetbrush($image, $brush). Параметр $brush в этой функции является просто еще одним ресурсом изображения, который может использоваться для рисования линий. Например, можно использовать прозрачный векторный рисунок цветка в виде кисти для добавления приятных цветочных узоров в изображение. Фрагмент кода ниже был написан для использования изображения облака в виде кисти при рисовании точки. Это добавляет одно облако в наше небо.

Я нашел изображение облака на Pixabay и уменьшил его до соответствующего размера для нашего проекта.

Ниже приводится полный код для изображения дома. Мы просто добавили две версии каждой фигуры, одеу для рисования контура, а другая для заполнения цветом.

Это окончательный результат кода выше, использующего PHP-расширение GD.

PHP GD Filled Hut Color

Отображение текста на изображениях

PHP GD поставляется с четырьмя различными функциями, чтобы позволить вам сделать несколько символов или только один символ в горизонтальном или вертикальном положении. Этими функциями являются imagechar(), imagecharup(), imagestring() и imagestringup(). Все из них принимает одни и те же шесть параметров, поэтому мы просто будем рассматривать функцию imagechar().

Параметр $font функции imagechar($image, $font, $x, $y, $string, $color) - это просто размер отображаемого текста. Он только принимает целочисленные значения от 1 до 5. Параметр $string представляет собой текст, который вы хотите визуализировать. Если вы передадите многосимвольную строку в функцию char, только первый символ будет отображен на изображении. Функции imagecharup() и imagestringup() будут отображать текст вертикально снизу вверх.

Когда дело доходит до отображения текста, четыре функции, которые мы обсуждали выше весьма ограничены. Вы обнаружите, что даже самое большое значение размер шрифта слишком маленькое для обычного использования. Кроме того, текст может быть написан только горизонтально и вертикально.

К счастью, GD также имеет функцию imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text), которая может отображать текст в любом нужном вам шрифте. Параметр $fontfile используется для указания пути к шрифту TrueType, которые вы хотите использовать для отображения текста. Параметры $x и $y определяют начальную позицию отрисованого текста.

В следующем примере используются все эти функции для создания некоторых приятных текстовых эффектов.

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

PHP GD Text

Заключительные мысли

Цель данной статьи – познакомить вас с различными функциями GD для рисования основных фигур в PHP с нуля. С помощью небольшой математики можно использовать эти функции для создания более сложных фигур, таких как обычные полигоны, скругленные прямоугольники и т.д.

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

Вы создали все более необычные эффекты текста в PHP? Пожалуйста, поделитесь ими с нами в комментариях.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.