 |
En este capítulo se analizará como enviar una imagen desde un cgi y posteriormente, como
generarlas a voluntad.
El protocolo para el envío de imágenes no varía notablemente en relación al envío de otro
tipo de documentos al browser. Primero ha de enviarse un header indicando el tipo de documento que
enviaremos y luego byte a byte, el documento (imagen) en cuestión. (Una lista de headers la encuentras en el capítulo uno
del tutorial).
A continuación se muestra el código del programa lanzagif.c
el cual ilustra el uso de la función lanzaGif que nuestra un gif almacenado en el disco, la función
no modifica para nada la imagen y puede ser usado para mostrar alguna imagen aleatoriamente (yo lo uso
en Minibanner).
 |
Los archivos GIF ( y otros formatos gráficos ) contienen cualquier combinación de caractéres, por lo cual es importante transmitirlos
exactamente como están almacenados en el disco. Desafortunadamente algunas versiones de Microsoft asumen que al enviar
un caracter de fin de linea usted desea enviar también un retorno de carro y lo agregan sin consultarle. Esta "delicadeza"
puede ser deshabilitada con la instrucción
_fmode= _O_BINARY;
En el siguiente código se ha incluido dentro del condicional
#ifdef _WIN32 que será verdadero
sólo si se compila el programa bajo Windows.
|
|
#include <stdio.h>
void lanzaGif( char *NombreGif );
main(){
lanzaGif("ejemplo.gif");
}
void lanzaGif( char *NombreGif ){
/* *************************************************************
envia una imagen leyendola del archivo NombreGif
**************************************************************** */
#define GIF_BUFF_SIZE 2048
FILE *fp;
int buff[GIF_BUFF_SIZE];
int leido = GIF_BUFF_SIZE;
#ifdef _WIN32
_fmode= _O_BINARY; // Necesario en Visual C++
#endif
fp = fopen(NombreGif,"rb");
if ( fp != NULL )
{
printf( "Content-type: image/gif\n\n"); /* Este es el header de un gif */
while ( leido == GIF_BUFF_SIZE ){
leido = fread(&buff,1,GIF_BUFF_SIZE,fp);
if (leido)
{
fwrite(&buff,1,leido,stdout); /* lanza lo leido por
la salida standard */
}
}
fclose(fp);
}
}
|
El resultado del programa lo ves en la imagen a continuación. (El código html para
la inclusión del cgi es: <img src=lanzagif.cgi>
Ahora tenemos dos formas de generar un gif, una es estudiando la estructura
interna de un gif y lanzando 1 a 1 los bytes que lo compondrían o utilizar alguna librería para
lograr lo mismo. Como el propósito de este tutorial no es profundizar el formato de archivos gifs
nos remitiremos a usar GD una popular librería disponible
gratuitamente en internet.
Para eso desarrollaremos un pequeño ejemplo que no pretende ahondar en el uso de la
mencionada librería sino mostrar la base de la generación de imágenes.
|