Ver Mensaje Individual
  #5 (permalink)  
Antiguo 16/08/2004, 11:50
juacais
 
Fecha de Ingreso: julio-2004
Mensajes: 9
Antigüedad: 19 años, 10 meses
Puntos: 0
CGI en Perl para acabar la carrera

Hoola amigo,

ya hice algo que parece que funciona, pero no se me ocurre como puedo guardar un "historial" con las imagenes generadas y devolverlas en caso de que esten en este historial.

¿Se te ocurre alguna manera sencilla de hacerlo? Por no complicarlo con acceso a bases de datos. Si me pudieras ayudar te estaría muy agradecido, voy fatal de tiempo y tengo que acabar también el proyecto para ya!!

De verdad, estoy dispuesto a pagarte o a hacerte un regalo, lo que tu me digas. Los requisitos del cgi por si quieres consultarlos están en el tema del foro.

¡Espero tu respuesta! ¡Muchísimas gracias por todo!

[email protected]

Este es el cgi provisional, sin historial de imagenes generadas:

#!/usr/bin/perl



#declaro uso de GD
use GD;

#construccion tabla asociativa para tamano texto
%tam = ("1",gdTinyFont,"2",gdSmallFont,"3",gdMediumBoldFo nt,"4",gdLargeFont,"5",gdGiantFont);

#reconocimiento metodo de pansaje de datos, si es un post lectura para input standard ( en esto programa sera siempre un GET )
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
} else {
@pairs = split(/&/, $ENV{'QUERY_STRING'});
}


#control de datos recibidos e insercion en tabla asociativa FORM
foreach $pair (@pairs) {
($key, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/\cM/\n/;
eval("\$$key = \"$value\"");
$FORM{$key} = $value;
}


#asociacion de una varX para cada uno de los elementos recibidos en la tabla asociativa
foreach $var (keys(%FORM)){
$var = $FORM{$var};
}

#declaracion de GD construccion de una imagen de 640x400 pixeles
$im = new GD::Image(640,400);


#reserva de colores segn RGB
$Blanco = $im->colorAllocate(255,255,255);
$Negro= $im->colorAllocate(0,0,0);
$Rojo= $im->colorAllocate(255,0,0);
$Azul = $im->colorAllocate(0,0,255);
$Celeste =$im->colorAllocate(0,200,155);
$Gris =$im->colorAllocate(190,190,190);
$Verde = $im->colorAllocate(0,255,0);
$Salmon = $im->colorAllocate(250,128,114);
$Naranjas = $im->colorAllocate(255,165,0);
$Coral = $im->colorAllocate(255,127,80);
$Tomate = $im->colorAllocate(255,99,71);
$Rosa = $im->colorAllocate(255,192,203);
$Marron = $im->colorAllocate(176,48,96);
$Magenta = $im->colorAllocate(255,0,255);
$Orquidea = $im->colorAllocate(218,112,214);

#preparacion de tabla asociativa para todos los colores declarados

%col = ("Salmon",$Salmon,"Naranjas",$Naranjas,"Coral",$Co ral,"Tomate",$Tomate,"Rosa",$Rosa,"Marron",$Marron ,"Magenta",$Magenta,"Orquidea",$Orquidea,"Blanco", $Blanco,"Negro",$Negro,"Rojo",$Rojo,"Azul",$Azul," Celeste",$Celeste,"Gris",$Gris,"Verde",$Verde);

#extraccion de las tablas de los valores seleccionados
$color = $col{"$var3"};
$texto = $var1;
$tamano = $tam{"$var2"};


#parametros de la imagen ( transparencia y modo interlace )
$im->transparent($white);
$im->interlaced('true');

#instruccion que disena el texto en la imagen
#$im->string($tamano,10,150,$texto,$color);
$im->stringFT($color,"/usr/X11R6/lib/X11/fonts/TTF/luxisb.ttf",$tamano,0,0,150,$texto);
#modo de salida binario
binmode STDOUT;

#impresion en salida de la cabecera para imagen PNG
print "Content-type: image/png\n\n";

#impresion de la imagen generada
print $im->png

Última edición por juacais; 16/08/2004 a las 11:52