Работа с текстом

Рисование линий, прямоугольников и других фигур является важной частью при работе с изображениями. Однако зачастую все это было бы не столь информативно, если бы не возможность писать текст на них. Для этого в библиотеке GD имеется множество функций, одна из которых imagestring().

Вывод строки на изображении

1
2
3
4
5
6
7
8
9
10
11
<?php
header("Content-type:  image/png");
Simage = imagecreatetruecolor (100, 100);
Swhite = imagecolorallocate($image, 255, 255, 255);
// создание строки
imagestring($image, 3, 5, 49, "Hello, World!", Swhite);
// вывод изображения
imagepng(Simage);
// уничтожение изображения из памяти
imagedestroy($image);
?>

В результате выполнения этой программы выводится текст «Неllо, World!» на черном фоне квадрата.

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

Помимо разобранной функции в библиотеке GD имеется еще несколько альтернативных способов вывести строку. Например, функция imagettftext(), которая позволяет использовать шрифты TrueType.

Вывод строки на изображении с помощью функции imagettftext()

1
2
3
4
5
6
7
8
9
10
11
<?php
header("Content-type:  image/png");
$image = imagecreatetruecolor (100, 100);
$white = imagecolorallocate($image, 255, 255, 255);
// создание строки
imagettftext($image, 9, 0, 5, 49, Swhite, "Snap.ttf", "hello, World!");
// вывод изображения
imagepng($image);
// удаление изображения из памяти
imagedest roy($image);
?>

В этом примере мы использовали файл Snap.ttf, который содержит шрифт Snap ITC. Входные параметры этой функции следующие: идентификатор изображения, размер шрифта, угол поворота строки против часовой стрелки, координаты начала строки, ее цвет, путь к файлу со шрифтом (здесь он находится в одной папке с вызываемым файлом РНР) и строка для вывода.

Иногда бывает очень полезным знать длину и высоту выводимой строки, так как зачастую она постоянно пытается выйти за пределы изображения. Для решения этой проблемы применяют функции imagefontheight(), imagefontwidth() и imagettfbbox().

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?phр
header("Content-type:  image/png");
Simage = imagecreatetruecolor (200, 200);
Swhite = imagecolorallocate($image, 255, 255, 255);
// строка для вывода
$str = "Hello, World!";
// расчет координат начала строки
$х = (200 - strlen(Sstr) * imagefontwidth(4)) / 2;
$у = (200 - imagefontheight(4)) / 2;
// создание строки
imagestring($image, 4, $х, $у, $str, Swhite);
// вывод изображения
imagepng($image);
// удаление изображения из памяти
imagedestroy(Simage);
?>

В этом примере мы добиваемся вывода строки приблизительно посередине квадрата. Заметьте, что для вычисления длины строки мы умножили длину символа на количество букв в строке.

Однако дело осложняется, если текст находится под определенным углом. Для этого применяют функцию imagettfbbox().

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
headeг("Content-type: image/png");
Simage = imagecreatetruecolor (100, 100);
Swhite = imagecolorallocate($image, 255, 255, 255);
// записываем массив координат
$mas_loc = imagettfbbox(15, 23,  "Snap.ttf",  "Hello, World!");
// расчет координат начала строки
$х = 100 - ($mas_loc[0] + $mas_loc[2] + $mas_loc[4] + $mas_loc[6]) / 4;
$y = 100 - ($mas_loc[1] + $mas_loc[3] + $mas_loc[5] + $mas_loc[7]) / 4;
// создание строки
imagettftext($image,15, 23, $x, $y, Swhite,  "Snap.ttf",  "Hello, World!");
// вывод изображения
imagepng(Simage);
// уничтожение изображения из памяти
imagedest roy(Simage);
?>

Входными параметрами функции imagettfbbox() являются соответственно размер шрифта, угол поворота строки, путь к файлу со шрифтом и строка для вывода. Функция возвращает массив с координатами углов прямоугольника, описывающего строку в порядке, представленном в таблице.

2 – Правый нижний угол (ось ОХ)
3 – Правый нижний угол (ось OY)
4 – Правый верхний угол (ось ОХ)
5 – Правый верхний угол (ось OY)
6 – Левый верхний угол (ось ОХ)
7 – Левый верхний угол (ось OY)

На этом заканчивается обзор основных графических возможностей

Работа с изображениями
Создание и вывод изображений
Модификация изображений

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

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100