imagettfbbox

(PHP 4, PHP 5, PHP 7, PHP 8)

imagettfbboxDevuelve la caja circundante de un texto usando fuentes TrueType

Descripción

imagettfbbox(
    float$size,
    float$angle,
    string$fontfile,
    string$text
): array

Esta 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.

Parámetros

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_basedirno aplica a fontfile.

text

El string a ser medido.

Valores devueltos

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.

keycontents
0esquina inferior izquierda, posición X
1esquina inferior izquierda, posición Y
2esquina inferior derecha, posición X
3esquina inferior derecha, posición Y
4esquina superior derecha, posición X
5esquina superior derecha, posición Y
6esquina superior izquierda, posición X
7esquina 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.

Ejemplos

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);
?>

Notas

Nota: Esta función sólo está disponible si PHP fue compilado con suporte de freetype (--with-freetype-dir=DIR)

Ver también

  • imagettftext() - Escribir texto en la imagen usando fuentes TrueType
  • imageftbbox() - Devolver la caja circundante de un texto usando fuentes mediante FreeType 2
To Top