(PHP 4, PHP 5, PHP 7)
imagettfbbox — Give the bounding box of a text using TrueType fonts
imagettfbbox ( float $size , float $angle , string $fontfile , string $text ) : array
This function calculates and returns the bounding box in pixels for a TrueType text.
Note:
imageftbbox() is an extended variant of imagettfbbox() which additionally supports the
extrainfo
.
size
The font size in points.
angle
Angle in degrees in which text
will be measured.
fontfile
The path to the TrueType font you wish to use.
Depending on which version of the GD library PHP is using, when fontfile
does not begin with a leading /
then .ttf
will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.
When using versions of the GD library lower than 2.0.18, a space
character, rather than a semicolon, was used as the 'path separator' for different font files. Unintentional use of this feature will result in the warning message: Warning: Could not find/open font
. For these affected versions, the only solution is moving the font to a path which does not contain spaces.
In many cases where a font resides in the same directory as the script using it the following trick will alleviate any include problems.
<?php // Set the environment variable for GD putenv('GDFONTPATH=' . realpath('.')); // Name the font to be used (note the lack of the .ttf extension) $font = 'SomeFont'; ?>
Note:
Note that open_basedir does not apply to
fontfile
.
text
The string to be measured.
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.
Example #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); imagedestroy($im); ?>
Note: This function is only available if PHP is compiled with freetype support (--with-freetype-dir=DIR)
© 1997–2020 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/function.imagettfbbox.php