ТОП PHP скрипт сегодня: QR

Вы Тут:

Главная ›› Книги ›› PHP 5.0 для чайников ›› Работа с текстом

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

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

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

<?php
header("Content-type: image/png");
$image = imagecreatetruecolor (100, 100);
$white = imagecolorallocate($image, 255, 255, 255);

// создание строки
imagestring($image, 3, 5, 49, "Hello, World!", $white);

// вывод изображения
imagepng($image);

// уничтожение изображения из памяти
imagedestroy($image);
?>

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

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

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

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

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

<?php
header("Content-type: image/png");
$image = imagecreatetruecolor (100, 100);
$white = imagecolorallocate($image, 255, 255, 255);

// создание строки
imagettftext($image, 9, 0, 5, 49, $white, "Snap.ttf", "Hello, World!");

// вывод изображения
imagepng($image);

// удаление изображения из памяти
imagedestroy($image);
?>

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

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

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

Листинг 13.10. Использование длины и высоты строки

<?php
header("Content-type: image/png");
$image = imagecreatetruecolor (200, 200);
$white = imagecolorallocate($image, 255, 255, 255);

// строка для вывода
$str = "Hello, World!";

// расчет координат начала строки
$х = (200 - strlen($str) * imagefontwidtli(4)) /2;
$у = (200 - imagefontheight(4)) / 2;

// создание строки
imagestring($image, 4, $х, $у, $str, $white);

// вывод изображения
imagepng($image);

// удаление изображения из памяти
imagedestroy($image);
?>

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

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

Листинг 13.11. Использование функции imagettfbbox()

<?php
header("Content-type: image/png");
$image = imagecreatetruecolor (100, 100);
$white = 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, $white, "Snap.ttf", "Hello, World!");

// вывод изображения
imagepng($image);

// уничтожение изображения из памяти
imagedestroy($image);
?>

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

Таблица 13.1. Порядок описания строки.

Ключ Значение Координаты
0 Левый нижний угол (ось ОХ)
1 Левый нижний угол (ось ОY)
2 Правый нижний угол (ось ОХ)
3 Правый нижний угол (ось ОY)
4 Правый верхний угол (ось OX)
5 Правый верхний угол (ось OY)
6 Левый верхний угол (ось ОХ)
7 Левый верхний угол (ось OY)