Trazo de Imágenes en el servidor con PHP


Para trazar imagenes debemos tener instalado el soporte GD2 para PHP. Esto lo podemos verificar con la función phpinfo().


Creación de la Imagen

Para comenzar a crear una imagen debemos utilizar la función imagecreate( $ancho, $altura ); que solo acepta dos argumentos para especificar el tamaño de la imagen en pixeles.

/*!
 * Establecemos las medidas de la imagen en pixeles
 */
$ancho = 400;
$altura = 400;

/*!
 * Creamos la imagen con las medidas especificadas
 */
$imagen = imagecreate( $ancho, $altura );

Podemos colocarle un color de fondo, para esto utilizamos la función imagecolorallocate( $imagen, $red, $green, $blue ) donde especificamos a que imagen le colocaremos el color de fondo y los tres argumentos restantes los valores RGB respectivamente.

/*!
 * Colocamos un color RGB de fondo
 */
$fondo = imagecolorallocate( $imagen, 200, 200, 255 );

Hemos creado una imagen y colocado un color de fondo, pero aún no se mostrará hasta especificar al navegador que enviaremos una imagen con la función header() y enviarla con la función imagepng().

/*!
 * Especificamos al navegador que enviarémos una imagen PNG
 */
header( 'Content-Type: image/png' );

/*!
 * Enviamos la Imagen al navegador
 */
imagepng( $imagen );

Y finalmente, debemos destruir la imagen.

/*!
 * Destruimos la Imagen
 */
imagedestroy( $imagen );

Nuestra imagen será la siguiente.

Dibujando una Carita

Para dibujar una carita feliz utilizaremos la función imagearc( $imagen, $centroX, $centroY, $ancho, $alto, $inicio, $final, $color ); los parametros $inicio y $final se especifican en grados.

El siguente código lo debemos escribir justo antes del código header( 'Content-Type: image/png' );

/** Color de línea */
$color = imagecolorallocate( $imagen, 255, 0, 0 );

/** Cabeza */
imagearc( $imagen, 200, 200, 200, 200, 0, 360, $color );

/** Ojo izquierdo */
imagearc( $imagen, 160, 180, 50, 50, 190, -10, $color );

/** Ojo derecho */
imagearc( $imagen, 240, 180, 50, 50, 190, -10, $color );

/** Sonrísa */
imagearc( $imagen, 200, 200, 150, 150, 30, 150, $color );

La carita sonriente serála siguiente.

Agregando Texto

Para agregar texto a la imagen vamos a utilizar la función imagestring( $imagen, $letra, $x_posicion, $y_posicion, $texto, $color ).

En el segundo parámetro de la función especificamos el la letra que vamos autilizar por medio de un valor numérico (1 – 5), estas letras ya estan integradas en el paquete gráfico. Podemos cargar nuestras propias fuentes con la función imageloadfont.

/** Saludo */
$texto = "Hola GD!";
$letra = 5;

imagestring( $imagen, $letra, 170, 350, $texto, $color_texto );

Código completo

Finalmente nuestro código queda de la siguiente manera.

/*!
 * Establecemos las medidas de la imagen en pixeles
 */
$ancho = 400;
$altura = 400;

/*!
 * Creamos la imagen con las medidas especificadas
 */
$imagen = imagecreate( $ancho, $altura );

/*!
 * Colocamos un color RGB de fondo
 */
$fondo = imagecolorallocate( $imagen, 200, 200, 255 );

/*!
 * Carita felíz
 */

/** Color de línea */
$color = imagecolorallocate( $imagen, 255, 0, 0 );

/** Cara */
imagearc( $imagen, 200, 200, 200, 200, 0, 360, $color );
imagearc( $imagen, 160, 180, 50, 50, 190, -10, $color );
imagearc( $imagen, 240, 180, 50, 50, 190, -10, $color );
imagearc( $imagen, 200, 200, 150, 150, 30, 150, $color );

/** Color de texto */
$color_texto = imagecolorallocate( $imagen, 255, 0, 255 );

/** Saludo */
$texto = "Hola GD!";
$letra = 5;

imagestring( $imagen, $letra, 170, 350, $texto, $color_texto );

/*!
 * Especificamos al navegador que enviarémos una imagen PNG y
 * envíamos la imagen al navegador
 */
header( 'Content-Type: image/png' );
imagepng( $imagen );

/*!
 * Destruimos la Imagen
 */
imagedestroy( $imagen );

Posted in

Leave a Reply