Haber si alguien me puede echar una mano con esta función pls
Me suelta el siguiente error cuando intento crear la imagen con el módulo GD
error: Inappropriate ioctl for device at /var/www/redmundial/php/fotos.cgi line 125.
La subrutina que hace crea el thumb es la siguiente
Using perl Syntax Highlighting
sub recepcion_de_archivo{
my $nombre_en_servidor = $FORM{file};
my $dir = $conf->{image_path};
$nombre_en_servidor = lc($nombre_en_servidor);
$nombre_en_servidor =~ s/ /_/gi;
$nombre_en_servidor =~ s!^.*(\\|\/)!!;
my $ext;
my $extension_correcta = 0;
foreach (@{ $conf->{image_ext} }) {
if($nombre_en_servidor =~ /\.$_$/i) {
$extension_correcta = 1;
$ext = $_;
last;
}
}
if($extension_correcta) {
#Abrimos el nuevo archivo
open (OUTFILE, ">$dir/$nombre_en_servidor") || die "No se puedo crear el archivo";
binmode(OUTFILE); #Para no tener problemas en Windows
#Transferimos byte por byte el archivo
while (my $bytesread = read($FORM{file}, my $buffer, 1024)) {
print OUTFILE $buffer;
}
#Cerramos el archivo creado
close (OUTFILE);
my $imagenPrinc;
#linea 125
if ($ext eq 'gif') { $imagenPrinc = GD::Image->newFromGif("$dir/$nombre_en_servidor") or die "error: $!"; }
elsif ($ext eq 'jpg' or 'jpeg') { $imagenPrinc = GD::Image->newFromJpeg("$dir/$nombre_en_servidor") or die "error: $!"; }
elsif ($ext eq 'png') { $imagenPrinc = GD::Image->newFromPng("$dir/$nombre_en_servidor") or die "error: $!"; }
unlink("$dir/$nombre_en_servidor");
#Checamos si se pudo leer correctamente la imagen
if(defined($imagenPrinc)) {
#Redimensionamos la imagen
my ($thumb,$x,$y) = Image::GD::Thumbnail::create($imagenPrinc,300) or die "error: $!";
my $nick = lc($FORM{nick});
my $time = time();
my $save = "$dir/";
$save .= "$FORM{cat}";
$save .= "/";
$save .= "$nick";
$save .= "-";
$save .= "$time";
$save .= ".png";
# Salvamos el thumbnail
open OUT, ">$save" or die "No se pudo salvar: $!";
binmode OUT;
print OUT $thumb->png;
close OUT;
print "<div align='center'>Gracias por enviar su foto</div><br>";
print "<META HTTP-EQUIV=Refresh CONTENT='5; URL=http://www.redmundial.org/'>";
exit;
}
else { die "error: $!"; }
}
else {
print "<h1>Extension incorrecta</h1>";
print "Sólo se reciben archivo con extension:";
print join(",", @{ $conf->{image_ext} });
print "<META HTTP-EQUIV=Refresh CONTENT='7; URL=http://www.redmundial.org/fotos.php?cmd=add'>";
exit(0);
}
}
my $nombre_en_servidor = $FORM{file};
my $dir = $conf->{image_path};
$nombre_en_servidor = lc($nombre_en_servidor);
$nombre_en_servidor =~ s/ /_/gi;
$nombre_en_servidor =~ s!^.*(\\|\/)!!;
my $ext;
my $extension_correcta = 0;
foreach (@{ $conf->{image_ext} }) {
if($nombre_en_servidor =~ /\.$_$/i) {
$extension_correcta = 1;
$ext = $_;
last;
}
}
if($extension_correcta) {
#Abrimos el nuevo archivo
open (OUTFILE, ">$dir/$nombre_en_servidor") || die "No se puedo crear el archivo";
binmode(OUTFILE); #Para no tener problemas en Windows
#Transferimos byte por byte el archivo
while (my $bytesread = read($FORM{file}, my $buffer, 1024)) {
print OUTFILE $buffer;
}
#Cerramos el archivo creado
close (OUTFILE);
my $imagenPrinc;
#linea 125
if ($ext eq 'gif') { $imagenPrinc = GD::Image->newFromGif("$dir/$nombre_en_servidor") or die "error: $!"; }
elsif ($ext eq 'jpg' or 'jpeg') { $imagenPrinc = GD::Image->newFromJpeg("$dir/$nombre_en_servidor") or die "error: $!"; }
elsif ($ext eq 'png') { $imagenPrinc = GD::Image->newFromPng("$dir/$nombre_en_servidor") or die "error: $!"; }
unlink("$dir/$nombre_en_servidor");
#Checamos si se pudo leer correctamente la imagen
if(defined($imagenPrinc)) {
#Redimensionamos la imagen
my ($thumb,$x,$y) = Image::GD::Thumbnail::create($imagenPrinc,300) or die "error: $!";
my $nick = lc($FORM{nick});
my $time = time();
my $save = "$dir/";
$save .= "$FORM{cat}";
$save .= "/";
$save .= "$nick";
$save .= "-";
$save .= "$time";
$save .= ".png";
# Salvamos el thumbnail
open OUT, ">$save" or die "No se pudo salvar: $!";
binmode OUT;
print OUT $thumb->png;
close OUT;
print "<div align='center'>Gracias por enviar su foto</div><br>";
print "<META HTTP-EQUIV=Refresh CONTENT='5; URL=http://www.redmundial.org/'>";
exit;
}
else { die "error: $!"; }
}
else {
print "<h1>Extension incorrecta</h1>";
print "Sólo se reciben archivo con extension:";
print join(",", @{ $conf->{image_ext} });
print "<META HTTP-EQUIV=Refresh CONTENT='7; URL=http://www.redmundial.org/fotos.php?cmd=add'>";
exit(0);
}
}
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4