imagettftext
(PHP 4, PHP 5, PHP 7, PHP 8)
imagettftext —
Рисует текст на изображении шрифтом TrueType
Описание
Замечание:
До PHP 8.0.0 функция imagefttext() была расширенной версией
функции imagettftext(), которая дополнительно поддерживала
параметр extrainfo.
Начиная с 8.0.0 функция imagettftext() стала псевдонимом функции imagefttext().
Список параметров
image
-
Объект GdImage, который вернула функция imagecreatetruecolor()
или другая функция генерации изображений.
size
-
Размер шрифта в типографских пунктах.
angle
-
Угол в градусах, 0 градусов обозначает расположение текста слева направо.
Положительные значения означают поворот текста против часовой стрелки.
Например, текст, который повернули на 90 градусов, потребуется читать снизу вверх.
x
-
Координаты x и y определяют
отправную точку первого символа текста — приблизительно левый нижний угол
символа. Определение базовой точки этой функцией отличается от функции imagestring(),
в которой координаты x и y определяют
верхний левый угол первого символа. Например, «верхнюю левую» точку определяют
координаты 0, 0.
y
-
y-координата. Это позиция базовой линии шрифта, в общем случае она не
совпадает с низшей точкой в символе.
color
-
Индекс цвета. Отрицательный индекс цвета отключает сглаживание.
Смотрите описание функции imagecolorallocate().
fontfile
-
Путь к шрифту TrueType, который вы хотите использовать.
В зависимости от того, какая библиотека GD загружена в PHP, если
параметр
fontfile не начинается с символа
/, то к имени файла будет добавлено
расширение .ttf и библиотека будет пытаться искать это имя файла
по определённому библиотекой пути шрифтов.
При работе с версиями библиотеки GD ниже 2.0.18
как «разделитель путей» для отдельных файлов шрифтов использовался символ
пробела, а не точка с запятой.
Непреднамеренное использование этой особенности приведёт к предупреждению:
Warning: Could not find/open font. Единственное
решение для этих версий библиотек — переместить файлы шрифтов
в директорию, имя которой не содержит пробелов.
Часто, когда шрифт лежит в том же каталоге, что и скрипт PHP, который работает с этим шрифтом,
помогает следующий трюк.
<?php
// Установка переменной окружения для GD
putenv('GDFONTPATH=' . realpath('.'));
// Имя шрифта для использования (обратите внимание, что расширение .ttf не указывается)
$font = 'SomeFont';
Замечание:
Обратите внимание, что open_basedir
не применяется к fontfile.
text
-
Текстовая строка в кодировке UTF-8.
Для доступа к символам шрифта за пределом 127-й позиции
в аргумент включают ссылки на десятичные цифровые символы в форме €.
Параметр поддерживает шестнадцатеричный формат наподобие ©.
Строки в кодировке UTF-8 передаются без преобразования.
Именованные сущности наподобие © не поддерживаются.
Такие именованные сущности декодируют в строку в кодировке UTF-8
функцией html_entity_decode().
Функция нарисует незакрашенный прямоугольник вместо символа, если шрифт не поддерживает символ в строке.
options
-
Массив с ключом linespacing, который содержит значение float.
Возвращаемые значения
Функция возвращает массив из 8 элементов, которые представляют
координаты четырёх точек — вершин рамки обрамления текста.
Массив представляет точки в следующем порядке: нижний левый, нижний правый,
верхний правый, верхний левый угол. Точки относятся к тексту независимо от угла,
поэтому «верхний левый» обозначает верхний левый угол, если смотреть на текст горизонтально.
Функция возвращает false, если возникла ошибка.
Примеры
Пример #1 Пример отрисовки текста функцией imagettftext()
Пример создаст изображение в формате PNG с белым фоном размером 400x30
пикселей и надписью "Тест..." черным цветом (с серой тенью) шрифтом Arial.
<?php
// Тип содержимого
header('Content-Type: image/png');
// Создание изображения
$im = imagecreatetruecolor(400, 30);
// Создание цветов
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
// Текст надписи
$text = 'Тест...';
// Замена пути к шрифту на пользовательский
$font = 'arial.ttf';
// Тень
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
// Текст
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
imagepng($im);
?>
Вывод приведённого примера будет похож на:
Примечания
Замечание: Эта функция доступна только в случае, если
PHP был скомпилирован с поддержкой freetype (--with-freetype-dir=DIR)
Смотрите также
- imagettfbbox() - Определяет границы прямоугольного обрамления для текста, который библиотека freetype2
выводит на экран путём рендеринга шрифта
- imagefttext() - Наносит текст на изображение путём рендеринга шрифта библиотекой FreeType 2
- imagestring() - Рисует строку текста горизонтально