Manejo de la librería GD básico

Manejo de la librería GD básico

Fecha: 26-Abr-2008 | Autor: .
Guardado en: Artículos, Tutoriales PHP

Comenzaremos con un tutorial básico sobre qué es y cómo funciona la librería GD de PHP, que nos permite manejar imáenes en PHP. Este tutorial es una colaboración de Sargento ;)

El proceso para generar dinámicamente una imágen es muy sencillo:

  1. Le decimos a PHP que vamos a crear una imagen.
  2. Definimos el tamaño de la imagen.
  3. Agregamos contenido a la imagen.
  4. Le damos salida a la imagen.
  5. Eliminamos la imagen de la memoria del servidor.

La manera de decirle a PHP que vamos a crear una imagen es por medio de los headers.

Headers
Los headers nos permiten definir el tipo de imagen que vamos a crear. Ya que los formatos de imagen más utilizados en internet son el GIF y el JPEG, serán en los que nos enfocaremos.

Header para definir una imagen en formato GIF:

header( "Content-type: image/gif" );

Header para definir una imagen en formato JPEG:

header( "Content-type: image/jpeg" );

Creando la imagen
Para crear una imagen, primero tendremos que definir el nombre de dicha imagen exactamente igual que como damos de alta una variable, al mismo tiempo tendremos que asignar el tamaño de dicha imagen. Podemos crear dos tipos de imagen: indexada o de 24 bits (true color).

Código para crear una imagen indexada:

$imagen = imagecreate( ancho, alto );

Código para crear una imagen de 24 bits:

$imagen = imagecreatetruecolor( ancho, alto );

Importante: Cuando creamos una imagen indexada, el color de fondo lo obtendrá del primer color que demos de alta, en cambio, cuando creamos una imagen TrueColor, el color de fondo será negro.
Agregando el contenido
Con los comandos de GD podemos dibujar círculos, elipses, arcos, rectángulos, polígonos, texto, recortar imágenes, montar una imagen sobre otra, etcétera.


¿Por qué este anuncio?

Sólo como ejemplo, el siguiente código dibujaría un rectángulo:

imagerectangle( $imagen, 10, 10, 100, 80, $color );

Los comandos para dibujar en GD los veremos en detalle en documentos posteriores.

Dando salida a la imagen
Una vez que terminamos de llenar el contenido de nuestra imagen, entonces podremos darle salida, ya sea a un archivo o únicamente a pantalla. No podremos ver el resultado de todos los comandos sino hasta que le demos salida.

Para dar salida a pantalla a una imagen GIF:

imagegif( $imagen );

Para dar salida a pantalla a una imagen JPEG:

imagejpeg( $imagen );

Eliminando la imagen
Una vez que generamos la imagen y le hemos dado salida, entonces podremos eliminarla. Si no hacemos esto, el servidor terminará por saturarse de archivos temporales y puede llegar a fallar.

El código para eliminar una imagen generada es:

imagedestroy( $imagen );

Muy importante: Siempre elimine la imagen después de haber sido generada.

Ahora todo al mismo tiempo
El siguiente es un ejemplo de un script para generar una imagen, agregarle contenido, mostrarla y eliminarla. Copie el siguiente código en un nuevo documento PHP, ejecútelo y observe los resultados:

<?php
// Definimos los headers
header("Content-type: image/gif");
 
// Creamos la imagen
$imagen = imagecreate(400,300);
 
// Agregamos contenido
$blanco = imagecolorallocate($imagen,255,255,255);
$negro = imagecolorallocate($imagen,0,0,0);
$rojo = imagecolorallocate($imagen,200,0,0);
$verde = imagecolorallocate($imagen,0,130,0);
$gris = imagecolorallocate($imagen,140,140,140);
 
imagefilledrectangle($imagen,50,50,145,250,$verde);
imagefilledrectangle($imagen,255,50,350,250,$rojo);
imagefilledellipse($imagen,200,150,80,80,$gris);
imagerectangle($imagen,50,50,350,250,$negro);
 
// Damos salida a la imagen
imagegif($imagen);
 
// Destruimos la imagen
imagedestroy($imagen);
 
?>

Si te gustó, comparte:
Y si fue de ayuda, puedes comprarme un café:
...ó la cena si quieres! ;)

Etiquetado como: ,


Gravatar

Marcelo


Desarrollador web, trabajando desde Montevideo, Uruguay para todo el mundo. Me especializo en Diseño web, Maquetación HTML5 & CSS3, jQuery y Programación PHP & MySQL, e intento aprender un poco más cada día.

5 comentarios, participa!

  1. mich

    15. Sep, 2010

    realmente comprendo poko
    e intentado aplicar varios ejemolos
    pero ahi la llevo

  2. Estuardolh

    03. Jul, 2011

    Muchas gracias, ejemplo basico y bien explicado.

  3. ta

    28. Sep, 2011

    y como hago para que en lugar de dar salida como imagen gif o jpg se dibuje en una pagina web.

  4. keli

    09. Feb, 2012

    Buenas noches.. habrá una manera de mostrar unos gráficos dependiendo de consultas sql que realice en mi base de datos?

  5. Marcelo

    29. Feb, 2012

    Hola Keli, sin duda puede hacerse… tienes que hacer la consulta que necesitas y luego con unos if() mostrar una cosa u otra ;)

Deja tu opinión