imagettfbbox

(PHP 4, PHP 5, PHP 7)

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

Описание

imagettfbbox ( float $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(300150);
$black imagecolorallocate($im000);
$white imagecolorallocate($im255255255);

// Белый фон
imagefilledrectangle($im00299299$white);

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

// создаем рамку для текста
$bbox imagettfbbox(1045$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($im1045$x$y$black$font'Powered by PHP ' phpversion());

// создаем другую рамку для другого текста
$bbox imagettfbbox(1045$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($im1045$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