• Publicidad

Visualizar una imagen creada con Perl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Visualizar una imagen creada con Perl

Notapor Alfumao » 2011-11-29 05:27 @269

¿Cómo puedo ver una imagen creada con Perl?

¿Sólo se pueden ver en un HTML o puedo obtener un archivo de imagen independiente para verlo con un editor de imágenes cualquiera?

He leído los tutoriales de Perl en español, y está todo muy bien explicado, pero aun así no consigo ver ninguna imagen de las que se crean (salen una cantidad de simbolitos de código (¿ensamblador?) en pantalla (STDOUT), pero no veo mi imagen...)

Gracias por adelantado.
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Publicidad

Re: Visualizar una imagen creada con Perl

Notapor explorer » 2011-11-29 05:31 @272

Depende de la ejecución del programa. Si el programa muestra su salida por el navegador web, como resultado de una petición CGI, entonces, por delante de la imagen debe ir una cabecera que indique qué tipo de imagen es (png, jpeg, etc).

Si, en cambio, lo ejecutas desde la línea de comandos, solo debes volcar ese salida a un fichero. O desde dentro del programa, abrir ese fichero.

Si nos das más pistas (un poco de código), te daremos más pistas.
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: Visualizar una imagen creada con Perl

Notapor Alfumao » 2011-11-29 05:53 @287

Hola de nuevo explorer,

La verdad es que necesito ser capaz de dibujar gráficas simples tipo "tarta", para luego poderlas poner en un HTML como imagen. Pero como aun no he preparado ese código (probé los del tutorial de Uriel, pero fui incapaz de visualizarlos), te mando un código generado a partir de un ejemplo, para dibujar un mapa de genes (usando como input un archivo que detalla unas coordenadas) usando el módulo Bio::Graphics.

Este sería el archivo de entrada llamado "Gtest.txt":
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
B0511.1 218 516 619
B0511.1 222 3185 3294
B0511.1  198 10946 11208
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Y este el programa:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!c:/perl/bin/perl.exe
  2. # This is code example 3 in the Graphics-HOWTO
  3. use strict;
  4. #use lib '/home/lstein/projects/bioperl-live';
  5. use Bio::Graphics;
  6. use Bio::Graphics::FeatureFile;
  7. use Bio::SeqFeature::Generic;
  8.  
  9. print"Enter your file to draw\:\n";
  10. my $draw = <STDIN>;
  11. open (INFILE, "$draw") || die ("can´t open input file");
  12. chomp(my @data = <INFILE>);
  13.  
  14. my $panel = Bio::Graphics::Panel->new(
  15.                           -length => 1000,
  16.                           -width => 800,
  17.                           -pad_left => 10,
  18.                           -pad_right => 10,
  19. );
  20. my $full_length = Bio::SeqFeature::Generic->new(
  21.                           -start => 1,
  22.                           -end => 1000,
  23. );
  24. $panel->add_track($full_length,
  25.                           -glyph => 'arrow',
  26.                           -tick => 2,
  27.                           -fgcolor => 'black',
  28.                           -double => 1,
  29. );
  30. my $track = $panel->add_track(
  31.                           -glyph => 'graded_segments',
  32.                           -label => 1,
  33.                           -bgcolor => 'blue',
  34.                           -min_score => 0,
  35.                           -max_score => 1000,
  36.                           -font2color => 'red',
  37.                           -sort_order => 'high_score',
  38.                           -description => sub {
  39.                                                 my $feature = shift;
  40.                                                 my $score = $feature->score;
  41.                                                 return "score=$score";
  42. },
  43. );
  44.  
  45. while (<INFILE>) { # read blast file
  46. chomp;
  47. next if /^\#/; # ignore comments
  48. my($name,$score,$start,$end) = split /\t+/;
  49. my $feature = Bio::SeqFeature::Generic->new(
  50.                          -score => $score,
  51.                          -display_name => $name,
  52.                          -start => $start,
  53.                         -end => $end,
  54. );
  55. $track->add_feature($feature);
  56. }
  57. binmode(STDOUT);
  58. print $panel->png;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


La duda ahora es cómo obtener un archivo para poder visualizar la imagen. ¿Se puede redirigir de alguna forma la salida para que vaya a un archivo tipo png en Windows?

Gracias por adelantado :wink:
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Re: Visualizar una imagen creada con Perl

Notapor explorer » 2011-11-29 06:43 @321

Solo habría que cambiar esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open my $salida, ">tarta.png" or die "ERROR: No puedo escribir: $!\n";
  2. binmode $salida;
  3. print   $salida $panel->png;
  4. close   $salida;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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: Visualizar una imagen creada con Perl

Notapor Alfumao » 2011-11-29 08:21 @389

Gracias explorer, siempre eres como la respuesta a las oraciones de los que posteamos dudas aquí, ¡ja,ja,ja!
Con tus indicaciones se ha conseguido sacar el output a un png. Ya veremos si consigo hacer que el programa me dé los resultados que necesito.

:wink:
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514


Volver a Básico

¿Quién está conectado?

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