(PHP 4, PHP 5, PHP 7)
imagettfbbox — Devuelve la caja circundante de un texto usando fuentes TrueType
$size
, float $angle
, string $fontfile
, string $text
) : arrayEsta función calcula y devuelve la caja circundante en píxeles de un texto TrueType.
Nota:
imageftbbox() es una variante extendida de imagettfbbox() que además soporta el
extrainfo
.
size
Tamaño de fuente en puntos.
angle
El ángulo en grados en el que text
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
.
text
El string a ser medido.
imagettfbbox() devuelve un array con 8
elementos que representan cuatro puntos que hacen la caja circundante del
texto si se tiene éxito y FALSE
en caso de error.
key | contents |
---|---|
0 | esquina inferior izquierda, posición X |
1 | esquina inferior izquierda, posición Y |
2 | esquina inferior derecha, posición X |
3 | esquina inferior derecha, posición Y |
4 | esquina superior derecha, posición X |
5 | esquina superior derecha, posición Y |
6 | esquina superior izquierda, posición X |
7 | esquina superior izquierda posición Y |
Los puntos son relativos a text sin importar el ángulo
angle
, por lo que "superior izquierda" significa la esquina superior
izquierda, viendo el texto horizontalmente.
Ejemplo #1 Ejemplo de imagettfbbox()
<?php
// Crear una imagen de 300x150
$im = imagecreatetruecolor(300, 150);
$negro = imagecolorallocate($im, 0, 0, 0);
$blanco = imagecolorallocate($im, 255, 255, 255);
// Establecer el fondo a blanco
imagefilledrectangle($im, 0, 0, 299, 299, $blanco);
// Ruta de nuestro archivo de fuente
$fuente = './arial.ttf';
// Primero creamos nuestra caja circundante para nuestro primer texto
$bbox = imagettfbbox(10, 45, $fuente, 'Powered by PHP ' . phpversion());
// Estas son nuestras coordenadas para X e Y
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 25;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;
// Escribirlo
imagettftext($im, 10, 45, $x, $y, $negro, $fuente, 'Powered by PHP ' . phpversion());
// Crear la siguiente caja circundante para el segundo texto
$bbox = imagettfbbox(10, 45, $fuente, 'and Zend Engine ' . zend_version());
// Establecer las coordenadas para que esté a continuación del primer texto
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) + 10;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;
// Escribirlo
imagettftext($im, 10, 45, $x, $y, $negro, $fuente, 'and Zend Engine ' . zend_version());
// Imprimir al navegador
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>
Nota: Esta función sólo está disponible si PHP fue compilado con suporte de freetype (--with-freetype-dir=DIR)