Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Dibujar barra de progreso en Perl  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 3 mensajes ] 
 
Nota Mar Ago 24, 2010 2:03 pm

Perlero Nuevo
Registrado: Mar Ago 24, 2010 1:56 pm
Mensajes: 2
Dibujar barra de progreso en Perl
Buenas a todos. Estoy realizando un cgi y éste recibe dos parámetros, uno máximo y otro mínimo.

Quisiera dibujar con algún módulo de Perl una barra de progreso (estática, no avanza con el tiempo) la cual pinto rellenada la cantidad que me dice en la variable mínimo, he estado mirando por CPAN y Google y lo más parecido que he visto es el módulo GD::3DBarGrapher el cual ya he usado para crear gráficas en un recuadro.

Éste no llega a valerme pues yo solo necesito dibujar la gráfica y de forma horizontal.

Me gustaría que solo fuera en Perl, pues he visto soluciones para barras de progreso en uploads con PHP+Ajax+Perl y esto no me valdría.

Toda la información se me pueda dar al respecto es bienvenida.

Gracias.


Nota Mar Ago 24, 2010 6:05 pm
Avatar de Usuario
Administrador
Registrado: Dom Jul 24, 2005 6:12 pm
Ubicación: Valladolid, España
Mensajes: 9518
Re: Dibujar barra de progreso en Perl  RESUELTO
Bienvenido a los foros de Perl en Español, Powit.

Hay más módulos para dibujar barras, como por ejemplo, GD::Graph::hbars, pero si se trata de representar una simple barra rectangular, te valdría con dibujarla con las instrucciones de dibujo del módulo GD.

_________________
JF^D Perl programming


Nota Mié Ago 25, 2010 11:59 am

Perlero Nuevo
Registrado: Mar Ago 24, 2010 1:56 pm
Mensajes: 2
Re: Dibujar barra de progreso en Perl
Buenas, explorer, muchas gracias por su respuesta. Me las he ingeniado para hacer algo como comentas en tu respuesta. Os adjunto el código por si a alguien le pudiera ser de ayuda:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. sub progressbar($filename,$vbar) {
  2.     ( $filename, $vbar ) = @_;
  3.     $max = "150";
  4.  
  5.     # Create a new image
  6.     use GD;
  7.     $im = new GD::Image( $max, 12 );
  8.  
  9.     $white      = $im->colorAllocate( 255, 255, 255 );
  10.     $blueborder = $im->colorAllocate( 77,  143, 204 );
  11.     $blue       = $im->colorAllocate( 165, 192, 220 );
  12.  
  13.     # Make the background transparent and interlaced
  14.     $im->transparent($white);
  15.     $im->interlaced('true');
  16.  
  17.     # Draw a border
  18.     $im->rectangle( 0, 0, $max - 1, 11, $blueborder );
  19.  
  20.     #rectangle
  21.     $im->filledRectangle( 1, 1, $vbar, 10, $blue );
  22.  
  23.     # Open a file for writing
  24.     open( PICTURE, ">$filename" ) or die("Cannot open file for writing");
  25.  
  26.     # Make sure we are writing to a binary stream
  27.     binmode PICTURE;
  28.  
  29.     # Convert the image to PNG and print it to the file PICTURE
  30.     print PICTURE $im->png;
  31.     close PICTURE;
  32. }



El ejemplo pinta una bonita barra tal y como la que adjunto.

Un saludo y gracias


Adjuntos:
picture.png
picture.png [ 173 Bytes | Visto 346 veces ]
Responder al tema  [ 3 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO