• Publicidad

Dibujar barra de progreso en Perl

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

Dibujar barra de progreso en Perl

Notapor Powit » 2010-08-24 14:03 @627

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.
Powit
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2010-08-24 13:56 @622

Publicidad

Re: Dibujar barra de progreso en Perl

Notapor explorer » 2010-08-24 18:05 @795

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 & 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

Re: Dibujar barra de progreso en Perl

Notapor Powit » 2010-08-25 11:59 @541

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:
Sintáxis: [ Descargar ] [ Ocultar ]
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. }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4



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

Un saludo y gracias
Adjuntos
picture.png
picture.png (173 Bytes) Visto 1807 veces
Powit
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2010-08-24 13:56 @622


Volver a Web

¿Quién está conectado?

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