array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'uk', ), 'this' => array ( 0 => 'function.imagettfbbox.php', 1 => 'imagettfbbox', 2 => 'Give the bounding box of a text using TrueType fonts', ), 'up' => array ( 0 => 'ref.image.php', 1 => 'Функції GD та Image', ), 'prev' => array ( 0 => 'function.imagetruecolortopalette.php', 1 => 'imagetruecolortopalette', ), 'next' => array ( 0 => 'function.imagettftext.php', 1 => 'imagettftext', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'en', 'path' => 'reference/image/functions/imagettfbbox.xml', ), 'history' => array ( ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); contributors($setup); ?>

imagettfbbox

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

imagettfbboxGive the bounding box of a text using TrueType fonts

Опис

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

This function calculates and returns the bounding box in pixels for a TrueType text.

Зауваження:

Prior to PHP 8.0.0, imageftbbox() was an extended variant of imagettfbbox() which additionally supported the extrainfo. As of PHP 8.0.0, imagettfbbox() is an alias of imageftbbox().

Параметри

size

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

angle

Angle in degrees in which string will be measured.

fontfile

Спосіб використання обраного шрифту TrueType.

Залежно від версії бібліотеки GD, яку використовує PHP, якщо fontfile не починається з /, то до назви файлу буде дописано .ttf і бібліотека шукатиме цей файл у визначеній нею теці.

Використовуючи версії бібліотеки GD, раніші за 2.0.18, "розділювачем шляхів" для декількох файлів шрифтів буде символ пропуску, а не крапка з комою. Ненавмисне використання цієї функції призведе до попередження: Warning: Could not find/open font. Єдиним рішенням для цих пошкоджених версій є переміщення файлу шрифту в шлях, що не містить в назві пропусків.

В багатьох випадках, коли шрифт знаходиться в тій самій теці, що і скрипт, який використовує його, наступний трюк позбавить від будь-яких проблем з його підключенням.

<?php
// Встановити змінну середовища для GD
putenv('GDFONTPATH=' . realpath('.'));

// Назва шрифту, що буде використано (увага — відсутнє розширення .ttf)
$font = 'SomeFont';
?>

Зауваження:

Варто зауважити, що open_basedir не застосовується до fontfile.

string

The string to be measured.

options

Same as in imagettftext().

Значення, що повертаються

imagettfbbox() returns an array with 8 elements representing four points making the bounding box of the text on success and false on error.
key contents
0 lower left corner, X position
1 lower left corner, Y position
2 lower right corner, X position
3 lower right corner, Y position
4 upper right corner, X position
5 upper right corner, Y position
6 upper left corner, X position
7 upper left corner, Y position

The points are relative to the text regardless of the angle, so "upper left" means in the top left-hand corner seeing the text horizontally.

Журнал змін

Версія Опис
8.0.0 The options has been added.

Приклади

Приклад #1 imagettfbbox() example

<?php
// Create a 300x150 image
$im = imagecreatetruecolor(300, 150);
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);

// Set the background to be white
imagefilledrectangle($im, 0, 0, 299, 299, $white);

// Path to our font file
$font = './arial.ttf';

// First we create our bounding box for the first text
$bbox = imagettfbbox(10, 45, $font, 'Powered by PHP ' . phpversion());

// This is our cordinates for X and Y
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 25;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

// Write it
imagettftext($im, 10, 45, $x, $y, $black, $font, 'Powered by PHP ' . phpversion());

// Create the next bounding box for the second text
$bbox = imagettfbbox(10, 45, $font, 'and Zend Engine ' . zend_version());

// Set the cordinates so its next to the first text
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) + 10;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

// Write it
imagettftext($im, 10, 45, $x, $y, $black, $font, 'and Zend Engine ' . zend_version());

// Output to browser
header('Content-Type: image/png');

imagepng($im);
?>

Примітки

Зауваження: Ця функція доступна тільки, якщо PHP скомпільовано з підтримкою freetype (--with-freetype-dir=DIR)

Прогляньте також