imagettfbbox
(PHP 4, PHP 5, PHP 7, PHP 8)
Give the bounding box of a text using TrueType fonts
Description
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().
Parameters
sizeSize
angleAngle in degrees in which
stringwill be measured.stringThe string to be measured.
optionsSame as in
imagettftext().
Return Values
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.
Changelog
| Version | Description |
|---|---|
| 8.0.0 | The options has been added. |
Examples
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 coordinates 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 coordinates 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);
?>