(PHP 4, PHP 5, PHP 7)
imagettfbbox — Give the bounding box of a text using TrueType fonts
$size
, float $angle
, string $fontfile
, string $text
) : arrayThis function calculates and returns the bounding box in pixels for a TrueType text.
Notă:
imageftbbox() is an extended variant of imagettfbbox() which additionally supports the
extrainfo
.
size
Dimensiunea font-ului în unități de puncte.
angle
Angle in degrees in which text
will be measured.
fontfile
Calea către fontul TrueType pe care doriți să-l utilizați.
În dependență de versiunea bibliotecii GD utilizate de PHP, atunci
când parametrul fontfile
nu începe cu un
/
la numele fișierului va fi adăugat .ttf
și biblioteca va încerca să caute acest fișier în căile către fonturi
definite în librărie.
La utilizarea versiunilor bibliotecii GD mai joase de 2.0.18, caracterul
spațiu
era utilizat ca separator al căilor pentru
diferite fișiere cu fonturi, dar nu punctul și virgula. Utilizarea neintenționată
a acestei facilități va rezulta în următorul avertisment:
Warning: Could not find/open font
. Pentru aceste
versiuni afectate unica soluție este de a transfera fontul într-o cale
care nu conține spații în denumire.
În multe cazuri atunci când fontul se află în același director ca și scriptul care îl utilizează, următorul truc va elimina problemele de incluziune.
<?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';
?>
Notă:
Observați că open_basedir nu se aplică la
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);
?>
Notă: Această funcție este disponibilă numai dacă PHP este compilat cu susținerea freetype (--with-freetype-dir=DIR)