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:
- Le decimos a PHP que vamos a crear una imagen.
- Definimos el tamaño de la imagen.
- Agregamos contenido a la imagen.
- Le damos salida a la imagen.
- 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); ?> |
mich
15. sep, 2010
realmente comprendo poko
e intentado aplicar varios ejemolos
pero ahi la llevo
Estuardolh
03. jul, 2011
Muchas gracias, ejemplo basico y bien explicado.
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.
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?
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 ;)