imagettfbbox

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

imagettfbboxDevuelve el rectángulo que rodea un texto dibujado con una fuente TrueType

Descripción

imagettfbbox(
    float $size,
    float $angle,
    string $font_filename,
    string $string,
    array $options = []
): array|false

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().

Parámetros

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().

Valores devueltos

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.

Historial de cambios

Versión Descripción
8.0.0 El parámetro options ha sido añadido.

Ejemplos

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

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() - Dibuja un texto con una fuente TrueType
  • imageftbbox() - Calcula el rectángulo de delimitación para un texto, utilizando la fuente actual y freetype2