Imagenes para entrega por Web

Bolo Lacertus lacertus@servidor.unam.mx
Mon, 12 Oct 1998 11:52:55 -0500


Saludos!!!

Bueno, el primer supuesto que voy a tomar que no mencionaste es que
deseas que el CGI entregue las imágenes a un HTTPD, de modo que eso
moldea la aplicación.

Juan C. Riestra wrote:
> Alguien ha hecho un CGI en perl que retorna una imagen?. Podria alguien

Bueno, he visto ejemplos, busca en el módulo GD.pm (para gifs).

> mostrarme el algoritmo basico, o algun ejemplito. Me refiero a que el CGI
> retorne una imagen de la siguiente forma.
> 
>   ############# ###############
>    imagen1.gif   imagen2.gif
>   ############# ###############
> 
> Es decir dos imagenes como una sola. y otro de la sigiente forma:
>   ##############
>    imagen3.gif
>   ##############
>   ##############
>    imagen4.gif
>   ##############

Bueno, primero lo primero:
?Como hago un CGI que entregue imágenes a el HTTPD?

Creo que alguien ya había mencionado esto así que seré breve, como tal
el HTTPD envía archivos de uno por uno en cada coneción con el cliente
(puede tener varias a la vez y mantenerlas abiertas entre archivos, pero
el principio se mantiene) de modo que si deseas que tu CGI mande una
imagen, debes de tomar en cuenta que el servidor solo espera UNA imagen,
es decir, no podrás (al menos no sin complicarte mucho la vida) mandar
dos imágenes una despues de la otra con la misma ejecucíon del CGI.

Muy bien, ?Como mandar dos imágenes?, la respuesta es simple, como de
costumbre tu puedes hacer una página HTML donde haya referencias a
tantas imágenes como desees, de modo que solo necesitas una página
(estática o resultado de un CGI, como mas te convenga) que en sus
imágenes tenga referencias a los CGI's, esto quizá te obligue a usar
CGI's que empleen el modo GET de paso de parametros, espero que esto sea
aceptable, por ejemplo, si quieres que tu CGI de primera imagen reciva
un parametro "nombre" con el valor "pato" y el segundo CGI la pareja
"nombre=vaca" tu HTML original puede tener algo como:

<p>
<IMG SRC="http://tu.servidor.donde.sea/cgi-bin/graf1.gci?nombre=pato>
<IMG SRC="http://tu.servidor.donde.sea/cgi-bin/graf1.gci?nombre=vaca>
<p>

Con eso el resultado de los CGI, si acaso es una gráfica que el browser
pueda desplegar, aparecerá en la posición indicada (notaras que entonces
ponerlas lado a lado o una debajo de la otra es casi trivial, depende de
donde pongas el <BR> o <P>.

Ok, ahora lo escabrozo.

?Como hago que el CGI regrese una imágen que el brower pueda desplegar?
Muy bien, esto lo diré de lo que recuerdo así que puede no ser correcto,
revisa en la documentación de GD porque ahi me parece que viene bien
descrito, además busca algún ejemplo en Web (un programa de contador
hecho en perl puede ser un buen ejemplo).

El problema se divide en dos:

1- Como le aviso al servidor que le entregaré una imagen
2- Como le entrego la imagen

1- Al emplear un CGI, no hay modo en que el servidor pueda determinar el
tipo de datos que recivirá, por eso es necesario que el encabezado
contenga un tipo MIME para el archivo, por lo regular empleamos
text/html, pero en esta ocasión habremos de usar otro, dependiendo del
tipo de imagenes que generes puede ser image/jpeg o image/gif (verificar
con la tabla de mime-types de tu browser favorito) en el encabezado de
modo que el servidor pueda notificar al cliente sobre que es lo que
enviará y tome las previsiones necesarias para el modo de trabsmición.
Además del tipo solo necesitarás dar al servidor los headers mínimos
(codigo de estado del CGI a lo mucho, un 300, o 303 quizá) en caso de
que tu servidor sea muy quisquilloso (por lo regular no hace falta).
Notese que no es HTML y como tal no debes usar etiquetas HTML.

2- Muy bien, ya le dije al servidor que le voy a entregar una imagen,
?Como se la doy?
Igual que siempre, que tu CGI saque toda la información de la imagen por
la salida estandar y el servidor quedará satisfecho.

Se supone que esto de hacer CGIs que entreguen imágenes es sencillo,
espero que lo corrobores y que cuando lo tengas hecho nos presumas los
resultados.

Deseandote un código claro y efectivo: Daniel Sol

-- 
Bolo Lacertus: lacertus@servidor.dgsca.unam.mx			==~\___\
http://132.248.71.81/cgi-bin/lacertus/hola			 =__vvvv
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/GE/GED d>d? s:+ a-- C++>+++$ US++ P+++>++++$ L E? W++>+++ N+ o? K- 
w--- O !M V- PS+ PE->-- Y+ PGP+ t+ 5? X- R@ tv-- b++>- DI+ D+ G+>++
e+>++ 
h* r-(*) z+ 
------END GEEK CODE BLOCK------
--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : cancelacion perl