imagettfbbox

(PHP 4, PHP 5, PHP 7, PHP 8)

imagettfbbox Получение параметров рамки обрамляющей текст написанный TrueType шрифтом

Описание

imagettfbbox(
    float$size,
    float$angle,
    string$font_filename,
    string$string,
    array$options = []
): array|false

Эта функция рассчитывает и возвращает параметры рамки вокруг TrueType текста в пикселах.

Замечание:

До PHP 8.0.0 imageftbbox() - это расширенный вариант imagettfbbox() который дополнительно поддерживает extrainfo. Начиная с PHP 8.0.0, imagettfbbox() является псевдонимом imageftbbox().

Список параметров

size

Размер шрифта в типографских пунктах.

angle

Угол в градусах в котором будет измерен string.

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.

string

Измеряемая строка.

Возвращаемые значения

imagettfbbox() возвращает массив из 8 элементов представляющих координаты четырёх точек - вершин рамки вокруг текста. В случае ошибки функция вернёт false.

ключсодержимое
0нижний левый угол, X координата
1нижний левый угол, Y координата
2нижний правый угол, X координата
3нижний правый угол, Y координата
4верхний правый угол, X координата
5верхний правый угол, Y координата
6верхний левый угол, X координата
7верхний левый угол, Y координата

Точки рассчитаны относительно текста text и независимо от угла angle. То есть "верхний левый" означает верхний левый угол, если смотреть на текст горизонтально.

Список изменений

ВерсияОписание
8.0.0 Добавлен параметр options.

Примеры

Пример #1 Пример использования imagettfbbox()

<?php
// создание изображения 300x150
$im = imagecreatetruecolor(300, 150);
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);

// Белый фон
imagefilledrectangle($im, 0, 0, 299, 299, $white);

// Путь к файлу шрифта
$font = './arial.ttf';

// создаём рамку для текста
$bbox = imagettfbbox(10, 45, $font, 'Powered by PHP ' . phpversion());

// наши координаты X и Y
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 25;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

// Пишем текст
imagettftext($im, 10, 45, $x, $y, $black, $font, 'Powered by PHP ' . phpversion());

// создаём другую рамку для другого текста
$bbox = imagettfbbox(10, 45, $font, 'and Zend Engine ' . zend_version());

// задаём координаты так, чтобы текст шёл сразу за первой надписью
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) + 10;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

// Пишем вторую надпись
imagettftext($im, 10, 45, $x, $y, $black, $font, 'and Zend Engine ' . zend_version());

// Вывод в броузер
header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);
?>

Примечания

Замечание: Эта функция доступна только в случае, если PHP был скомпилирован с поддержкой freetype (--with-freetype-dir=DIR)

Смотрите также

  • imagettftext() - Рисование текста на изображении шрифтом TrueType
  • imageftbbox() - Определение границ текста выводимого шрифтом freetype2
To Top