[caracas-pm] Mostrar una foto por tt2
Ernesto Hernández-Novich
emhnemhn at gmail.com
Thu Mar 12 07:57:27 PDT 2009
On Wed, 2009-03-11 at 22:20 -0430, Sergio Necepurenko wrote:
> Buen día amigos, tiempo sin escribir.
>
> Estoy tratando de hace lo siguiente:
>
> my $buff=undef;
> open(my $hf,”unafoto.jpg”) or die "Can't open unafoto.fpg file for read:
> $!\n";
> binmode $hf;
> $buff.=$_ while (<$hf>);
> close($hf);
> $ver{foto}=$buff;
> para después mostrarla en un template:
> <img align="[% align %]" border="[% border %]" src="[% foto %]">
>
> cuando visualizo me muestra es el contenido de la foto y no la imagen en si.
Correcto. Porque src debe ser un URL a una imagen. Un documento HTML no
incluye las imágenes en línea, sino que hace referencia a ellas. Los
navegadores al analizar el HTML notan que hay referencias a las
imágenes, las buscan y las incluyen. Tu programa no esta generando una
referencia a una imagen, sino poniendo los bytes de la imagen en el
lugar donde debería estar una referencia. Eso no funciona.
> Como se puede hacer para que <img ..... > me muestre la foto a travéz de
> una variable?? .
Si la foto siempre estará en unafoto.jpg, entonces simplemente pon ese
nombre en $ver{foto} para que termine en la plantilla como
"src=unafoto.jpg".
Si lo que pretendes es que la foto se lea de una base de datos o bien se
trata de una imagen generada (un gráfico, por ejemplo), entonces como
src tiene que ser un URL, lo que debes hacer es
$ver{foto} = '/cgi-bin/generafoto.pl'
y escribir el programa generafoto.pl para que emita la foto por la
salida estándar después de emitir el tipo MIME adecuado, e.g.
print "Content-type: image/png\n\n";
# instrucciones para leer la foto de un archivo o
# generarla y poner sus contenidos en la variable $img ...
binmode STDOUT;
print $img
De ese modo, la plantilla va a generar un HTML válido que en src tiene
una _referencia_ al programa que genera la foto. El navegador invocará a
dicho programa a través del servidor Web para poder obtener la imagen.
Nota que el tipo MIME depende de la imagen que vas a generar, así que
posiblemente te interese utilizar Template::Plugin::Image que incluye
funciones para determinar los atributos de la imagen, incluyendo su
resolución y tipo MIME.
Para mayor flexibilidad, el programa debería ser parametrizable de
manera que le puedas indicar cuál foto buscar o como generarla, e.g.
/cgi-bin/generafoto?id=42
--
Ernesto Hernández-Novich - Linux 2.6.28 i686 - Unix: Live free or die!
Geek by nature, Linux by choice, Debian of course.
If you can't aptitude it, it isn't useful or doesn't exist.
GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3
More information about the caracas-pm
mailing list