(PHP 4, PHP 5, PHP 7)
imagettfbbox — Получение параметров рамки обрамляющей текст написанный TrueType шрифтом
$size
, float $angle
, string $fontfile
, string $text
) : arrayЭта функция рассчитывает и возвращает параметры рамки вокруг TrueType текста в пикселах.
Замечание:
imageftbbox() - это расширенный вариант imagettfbbox() который дополнительно поддерживает
extrainfo
.
size
Размер шрифта в типографских пунктах.
angle
Угол в градусах в котором будет измерен text
.
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
Измеряемая строка.
imagettfbbox() возвращает массив из 8 элементов
представляющих координаты четырех точек - вершин рамки вокруг текста. В случае
ошибки функция вернет FALSE
.
ключ | содержимое |
---|---|
0 | нижний левый угол, X координата |
1 | нижний левый угол, Y координата |
2 | нижний правый угол, X координата |
3 | нижний правый угол, Y координата |
4 | верхний правый угол, X координата |
5 | верхний правый угол, Y координата |
6 | верхний левый угол, X координата |
7 | верхний левый угол, Y координата |
Точки рассчитаны относительно текста text и независимо от
угла angle
. То есть "верхний левый" означает верхний левый
угол, если смотреть на текст горизонтально.
Пример #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 )