Manejo de la librería GD básico

Manejo de la librería GD básico

Fecha: 26-Abr-2008 | Autor: Marcelo.
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:

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

Header para definir una imagen en formato JPEG:

1
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:

1
$imagen = imagecreate( ancho, alto );

Código para crear una imagen de 24 bits:

1
$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.

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

1
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:

1
imagegif( $imagen );

Para dar salida a pantalla a una imagen JPEG:

1
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:

1
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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ó este post, compártelo:
  • Meneame
  • Twitter
  • Facebook
  • Google Bookmarks
  • Live
  • del.icio.us
  • BarraPunto
  • Technorati
  • Bitacoras.com
Me gusta! ¿Te ha gustado esta entrada? Hazlo saber!.
Loading ... Loading ...

Etiquetado como: ,

Gravatar

Marcelo Ferreiro


Desarrollador web: me especializo en Diseño web, Maquetación xHTML & CSS y Programación PHP & MySQL, e intento aprender un poco más cada día.

Deja tu opinión