(PHP 4, PHP 5, PHP 7, PHP 8)
imagettfbbox — Devuelve el rectángulo que rodea un texto dibujado con una fuente TrueType
$size
,$angle
,$font_filename
,$string
,$options
= []
Calcula y devuelve el rectángulo que rodea el texto
text
, escrito con una fuente TrueType.
Nota:
Antes de PHP 8.0.0, imageftbbox() era una variante extendida de imagettfbbox() que además soporta
extrainfo
. A partir de PHP 8.0.0, imagettfbbox() es un alias de imageftbbox().
size
Tamaño de fuente en puntos.
angle
El ángulo, en grados, en el que el parámetro string
será medido.
fontfile
La ruta a la fuente TrueType que se desea usar.
Dependiendo de la versión de la biblioteca para PHP de GD que se use, cuando
fontfile
no comience con un carácter inicial
/
, se añadirá .ttf
al nombre del fichero, y la biblioteca intentará buscar ese
nombre de fichero en toda la ruta de fuentes definidas por la biblioteca.
Cuando se usan versiones de la biblioteca GD menores que la 2.0.18, se usa un carácter espacio
en lugar de un punto y coma como 'separador de rutas' para diferentes ficheros de fuentes.
Un uso no intencionado de esta característica resultará en el mensaje de advertencia:
Warning: Could not find/open font
. La única solución para estas versiones
afectadas es mover la fuente a una ruta que no contenga espacios.
En muchos casos donde una fuente reside en el mismo directorio que el script que la usa, el siguiente truco aliviará cualquier problema de inclusión.
<?php
// Establecer la variable de entorno para GD
putenv('GDFONTPATH=' . realpath('.'));
// Nombre de la fuente a usar (observe la ausencia de la extensión .ttf)
$font = 'SomeFont';
?>
Nota:
Observe que open_basedir no aplica a
fontfile
.
string
La cadena a medir.
options
Similar a imagettftext().
imagettfbbox() devuelve un array con 8
elementos representando los 4 vértices del rectángulo
en caso de éxito, false
si ocurre un error.
Clave | Significado |
---|---|
0 | Esquina inferior izquierda, abscisa |
1 | Esquina inferior izquierda, ordenada |
2 | Esquina inferior derecha, abscisa |
3 | Esquina inferior derecha, ordenada |
4 | Esquina superior derecha, abscisa |
5 | Esquina superior derecha, ordenada |
6 | Esquina superior izquierda, abscisa |
7 | Esquina superior izquierda, ordenada |
Las posiciones de los puntos son relativas al texto text, independientemente del ángulo: esquina superior izquierda hace referencia a la esquina superior izquierda del texto escrito horizontalmente.
Versión | Descripción |
---|---|
8.0.0 |
El parámetro options ha sido añadido.
|
Ejemplo #1 Ejemplo con imagettfbbox()
<?php
// Creación de una imagen de 300x150 píxeles
$im = imagecreatetruecolor(300, 150);
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);
// Define el fondo en blanco
imagefilledrectangle($im, 0, 0, 299, 299, $white);
// Ruta al archivo de la fuente
$font = './arial.ttf';
// Primero, creamos nuestro rectángulo que rodea nuestro primer texto
$bbox = imagettfbbox(10, 45, $font, 'Powered by PHP ' . phpversion());
// Nuestras coordenadas en X y en Y
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 25;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;
// Dibujo del texto
imagettftext($im, 10, 45, $x, $y, $black, $font, 'Powered by PHP ' . phpversion());
// Creamos nuestro rectángulo que rodea nuestro segundo texto
$bbox = imagettfbbox(10, 45, $font, 'and Zend Engine ' . zend_version());
// Define las coordenadas para que el segundo texto siga al primero
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) + 10;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;
// Dibujo del texto
imagettftext($im, 10, 45, $x, $y, $black, $font, 'and Zend Engine ' . zend_version());
// Envío al navegador
header('Content-Type: image/png');
imagepng($im);
?>
Nota: Esta función sólo está disponible si PHP fue compilado con suporte de freetype (--with-freetype-dir=DIR)