Рисование текста

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

Решение
Для встроенных шрифтов библиотеки GD применяется функция ImageString():

ImageString($image, 1, $x, $y, 'I love PHP Cookbook', $text_color);
Для шрифтов TrueType предназначена функция ImageTTFText():
ImageTTFText($image, $size, 0, $x, $y, $text_color, '/path/to/font.ttf',
'I love PHP Cookbook');

Для шрифтов PostScript Type 1 применяются функции ImagePSLoadFont() и ImagePSText():

$font = ImagePSLoadFont('/path/to/font.pfb');
ImageString($image, 'I love PHP Cookbook', $font, $size,
$text_color, $background_color, $x, $y);

Обсуждение
Для того чтобы поместить текст в область изображения, вызовите функцию ImageString(). Подобно другим функциям рисования библиотеки GD, функции ImageString() необходима обширная входная инфор-мация: область, на которой рисуют, номер шрифта, координаты x и y верхнего правого угла первой буквы, отображаемая строка и, наконец, цвет, задаваемый для рисования строки.

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


Шрифт номер 1 самый маленький, а шрифт номер 5 самый большой.Любое значение, выходящее за этот диапазон, порождает ближайший к указанному значению допустимый размер.Чтобы нарисовать текст вертикально, а не горизонтально, используйте вместо предыдущей функцию ImageStringUp().Для того чтобы со шрифтами TrueType можно было работать, необходимо также инсталлировать библиотеку FreeType и сконфигурировать
PHP во время его инсталляции для использования библиотеки FreeType. Главный сайт FreeType находится на http://www.freetype.org.

Чтобы разрешить поддержку FreeType 1.x, укажите параметр --withttf, а для FreeType 2.x – параметр --with-freetype-dir=DIR.

Подобно функции ImageString(), функция ImageTTFText() печатает строку в области отображения, но она имеет немного другие параметры, расположенные в другом порядке:
ImageTTFText($image, $size, $angle, $x, $y, $text_color, '/path/to/font.ttf',$text);

Аргумент $size представляет размер шрифта в пикселах, $angle – угол поворота в градусах в направлении, обратном направлению вращения часовой стрелки, а /path/to/font.ttf определяет путь файлу шрифта TrueType. В отличие от функции ImageString(), в данном случае точка($x,$y) – это крайние левые координаты базовой линии первой буквы.

Базовая линия определяет нижнюю границу, на которой располагается большинство символов.


Такие символы, как «g» и «j», продолжаются ниже базовой линии; символы «a» и «z» находятся на базовой линии.

Шрифтам PostScript Type 1 необходима инсталляция библиотеки t1lib. Ее можно загрузить с ftp://sunsite.unc.edu/pub/Linux/libs/graphics/ и встроить в PHP с помощью параметра --with-t1lib.

И здесь тоже синтаксис печати текста похож, но не тот же самый:

$font = ImagePSLoadFont('/path/to/font.pfb');
ImagePSText($image, $text, $font, $size, $text_color,
$background_color, $x, $y);
ImagePSFreeFont($font);

Во-первых, имена шрифтов PostScript нельзя прямо передать функции ImagePSText(), они должны быть загружены с помощью функции ImagePSLoadFont(). В случае успеха функция возвращает ресурс шрифта, который может быть использован функцией ImagePSText(). Во-вторых, помимо указания цвета текста, надо передать цвет фона, который будет использован при вычислении сглаживания. Позиционирование точки ($x,$y) аналогично тому, как это делает библиотека TrueType.

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

Кроме указанных выше обязательных аргументов функция ImagePSText() принимает также четыре необязательных аргумента в следующем порядке: space, tightness, angle и antialias_steps.


Необходимо включать или все четыре аргумента, или ни один из них (т. е. нельзя передать один, два или три из этих аргументов). Первый аргумент управляет размером физического интервала (т. е. пространством, образующимся после нажатия клавиши пробела); второй аргумент определяет плотность расположения букв; третий аргумент – это угол поворота в градусах в направлении, обратном направлению вращения
часовой стрелки; последний аргумент представляет собой значение для сглаживания. Это число должно быть равно или 4, или 16. Для получения более качественной картинки, но требующей больше вычислительных затрат, задайте значение 16.

По умолчанию значения space, tightness и angle равны 0. Положительное значение увеличивает расстояние между словами и буквами или поворачивает рисунок в направлении, обратном направлению вращения часовой стрелки. Отрицательное число сжимает слова и буквы или поворачивает рисунок в обратном направлении. Вывод следующего примера показан на рис. 15.7:

// нормальное изображение
ImagePSText($image, $text, $font, $size, $black, $white, $x, $y, 0, 0, 0, 4);
// дополнительное пространство между словами
ImagePSText($image, $text, $font, $size, $black, $white, $x, $y + 30,
100, 0, 0, 4);// дополнительное пространство между буквами
ImagePSText($image, $text, $font, $size, $black, $white, $x, $y + 60,
0, 100, 0, 4);.



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Безопасная работа с изображениями
Построение динамических изображений
Программа: создание гистограмм результатов голосования
Рисование дуг, эллипсов и окружностей
Рисование линий, прямоугольников и многоугольников

Вернуться в раздел: PHP / 15. Графика