• Publicidad

Fallo al subir imagen y transformarla a thumbnail

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Fallo al subir imagen y transformarla a thumbnail

Notapor AkonD » 2006-11-08 23:06 @004

Wenas amigos.

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
Sintáxis: [ Descargar ] [ Ocultar ]
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);
  }

}
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
AkonD
Perlero nuevo
Perlero nuevo
 
Mensajes: 50
Registrado: 2005-10-06 06:36 @316
Ubicación: España

Publicidad

Notapor explorer » 2006-11-09 06:24 @308

Por lo que he podido ver, puede ser que GD no encuentra las librerías necesarias para leer ficheros GIF. El mensaje de error es del sistema, no de GD. Ha intentado abrir un fichero GIF y el sistema no sabe cómo tratarlo.

http://www.mewsoft.com/cgi-bin/forum/fo ... ng=English
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2006-11-09 10:42 @487

Hola:

Checa tu versión del módulo GD. Lo que sucede es que hubo un problema de copyright con el tipo de archivo .gif, pero se terminó solucionando y GD volvió a implementarlo, esto podría ser el problema que tienes.


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados