Está en la página 1de 2

Manejando fuentes

Utilizando fuentes
Dibujando segmentos
TrueType Aunque presentaremos únicamente el código fuente de una de las imágenes, para
hacer la comprobación de las funciones y las diferencias de visualización insertaremos
Si has leído los comentarios de la dos ejemplos. Uno en formato PGN y otro en JPG.
página anterior recordarás que
para usar estas funciones es Recuerda que las únicas diferencias entre ambos radican en utilizar: Header("Content-
preciso que estén instaladas las type: image/png") o Header("Content-type: image/jpeg") y en las funciones Imagepng ó
librerías FreeType y que, además, Imagejpeg.
conozcamos el path de directorio
que contiene las fuentes TrueType.
Texto TrueType horizontal
Instalación de fuentes
<?
Header("Content-type: image/png");
Hemos creado un subdirectorio $im = imagecreate(400,300);
llamado fuentes y lo hemos $fondo=imagecolorallocate ($im, 255, 255, 210);
incluido en directorio donde están
$rojo=imagecolorallocate ($im, 255, 0, 0);
alojadas estas páginas.

En ese subdirectorio hemos $texto="PHP";


incluido dos fuentes TrueType
manteniendo en una de ellas el Imagettftext($im, 40, 0, 100, 270, $rojo,
nombre original (arial.ttf) y "./fuentes/fuente2.ttf", $texto);
renombrado la otra como fuente2.
ttf. Imagepng($im);
imagedestroy($im);
Como podrás comprobar en los
ejemplos, no hay problema alguno
por el hecho de renombrar las ?>
fuentes.
Ver img25.php Ver img26.php
Escribiendo con fuentes Formato PNG Formato JPG
TrueType
Texto TrueType girado
La función PHP que nos permite
insertar este tipo de textos en
imágenes dinámicas es la <?
siguiente: Header("Content-type: image/png");
$im = imagecreate(400,300);
Imagettftext($nom, tam, $fondo=imagecolorallocate ($im, 255, 255, 210);
ang, x, y, $col, $fuente, $txt) $rojo=imagecolorallocate ($im, 255, 0, 0);
donde:
$texto="Me gusta PHP";
$nom es, como siempre, el
nombre de la imagen. Imagettftext($im, 40, 30, 100, 270, $rojo,
"./fuentes/fuente2.ttf", $texto);
tam es un número entero que
indica el el tamaño de la fuente.
Imagepng($im);
ang es el giro expresado en imagedestroy($im);
grados sexagesimales que
pretendemos que tenga la cadena ?>
de texto. Si ang=0 el texto
aparecerá escrito en horizontal.
Ver img27.php Ver img28.php
x e y son las coordenadas del Formato PNG Formato JPG
punto de inicio de la inserción del
texto. Ese punto coincide con la
esquina inferior izquierda del Centrando textos
rectángulo imagi- nario que
contiene el texto. Aquí tienes un ejemplo donde utilizando ImageTTFBox e ImageTTFText se puede
centrar un texto -tanto si es horizontal como si está girado- con relación a un punto.
$col es el color a utilizar en el
texto. En este ejemplo, el punto de referencia para el centrado es (200,150) que es el
centro de la imagen.
$fuente es una cadena de texto
que contiene el path y el nombre
Las coordenadas de ImageTTFText, como puedes ver, están calculadas usando las
de la fuente. Observa los ejemplos.
coordenadas de ese punto de referencia y los valores del array generado por
$txt es el nombre de la variable ImageTTFBox
que contiene el texto a insertar.
. Si la variable que contiene el array generado por ImageTTFBox se llama $pepa, las
coordenadas del centro del rectángulo imaginario son $pepa[4]/2 y $pepa[5]/2
Colocando textos
Partiendo de esos valores, si queremos centrar el texto sobre un punto de la imagen
PHP dispone de una función que cuyas coordenadas son (X,Y) nos basta con escribir como parámetros de la función
permite determinar las ImageTTFText los siguientes:
dimensiones de una caja de
texto (el rectángulo imaginario
que rodea el texto). ■ Abscisa= X - $pepa[4]/2

$rec= ImageTTFBBox (tam, ■ Abscisa= Y - $pepa[5]/2


ang, $fuente, $txt)
Este procedimiento es válido tanto para textos horizontales como para textos girados.
donde: tam es el tamaño de la
fuente a utilizar.
Aquí lo tienes:
ang es el ángulo de rotación del
texto que tendría valor cero en el <?
caso de orientación horizontal. Header("Content-type: image/png");
$fuente es el path y nombre de
la fuente a a utilizar. $im = imagecreate(400,300);
$fondo=imagecolorallocate ($im, 255, 255, 210);
$gris=imagecolorallocate ($im, 160, 160,160);
$txt es el nombre de la variable
que contiene el texto a incluir. $rojo=imagecolorallocate ($im, 255, 0, 0);

La variable $rec recoge un array $texto="El mundo del PHP";


escalar cuyos valores son las $texto1="lleno de posibilidades";
coordenadas de las cuatro
esquinas de la caja de texto.
$marco= ImageTTFBBox (40, 0, "./fuentes/arial.ttf", $texto);
Los índices correspondientes a
cada uno de los elementos de ese
array son los siguientes: Imagettftext($im, 40, 0, 200-$marco[4]/2, 150-$marco[5]/2, $gris,
"./fuentes/arial.ttf", $texto);
■ Inferior izquierdo
Sus coordenadas son:
$rec[0],$rec[1] $marco1= ImageTTFBBox (30, 30, "./fuentes/fuente2.ttf", $texto1);

■ Inferior derecho Imagettftext($im, 30, 30, 200-$marco1[4]/2, 150-$marco1[5]/2, $rojo,


Sus coordenadas son: "./fuentes/fuente2.ttf", $texto1);
$rec[2],$rec[3]

■ Superior derecho
Imagepng($im);
Sus coordenadas son:
$rec[4],$rec[5]
imagedestroy($im);

■ Superior izquierdo ?>


Sus coordenadas son:
$rec[6],$rec[7]
Ver img29.php Ver img30.php
Respecto a estas coordenadas, Formato PNG Formato JPG
habremos de tener en cuenta lo
siguiente: Un ejemplo resumen
■ Las correspondientes al Aquí tienes un ejemplo bastante completo de generación de imágenes dinámicas.
vértice inferior izquierdo
son siempre (0,0). Ver ejemplo105.php Ver código fuente
■ Los puntos situados por
encima del (0,0) tienen ¡Cuidado!
ordenada negativa.
En servidores UNIX y LINUX la forma en la que indicamos el path del directorio que contiene
■ Las abscisas de los puntos
situados a la izquierda del
las fuentes varía sustancialmente respecto a la que hemos utilizado en estos ejemplos.
(0,0) son negativas. En aquellos, además de invertir los separadores, se requiere indicar siempre rutas
absolutas, con lo cual habría que hacer las modificaciones oportunas si se tratara de
publicar en un hosting que utilice alguno de estos sistemas operativos.

Anterior Indice Siguiente

También podría gustarte