• Publicidad

Crea el archivo gráfico, pero no lo veo desde el navegador

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

Crea el archivo gráfico, pero no lo veo desde el navegador

Notapor charlygarcia » 2009-03-16 13:34 @607

Hola a todos.

Tengo un problema para mostrar desde mi página una imagen creada con CGI.

Tengo en mi servidor una página cualquiera que llama a un gráfico así:

Sintáxis: [ Descargar ] [ Ocultar ]
  1. <img src="http://127.0.0.1/cgi-bin/pruebas/grafico1.cgi" border="0"> 


y estoy usando un código que encontré por estos lares:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!c:\perl\bin\perl.exe -w

use GD::Graph::bars;
use strict;

my @campos  = ('Mar 2006','Abr 2006','May 2006', 'Jun 2006', 'Jul 2006');
my @valores = (547, 2282, 2798, 2354, 4326);
my @graf    = (\@campos, \@valores);
my $grafico = GD::Graph::bars->new(500, 300);

$grafico->set(
  x_label => 'Mes',
  y_label => 'Visitas Totales',
  title   => 'Visitas Mensuales',
) or warn $grafico->error;


print "Content-type: image/png\n\n";
print $imagen->png;
exit(1);
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Si cambio las tres últimas líneas por:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open   (IMG, '>grafico.jpg') or die $!;    # Abrimos el fichero destino
binmode IMG;
print   IMG $grafico->plot(\@graf)->png;
close   IMG;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

funciona perfecto y me crea el archivo en el mismo directorio del programa, pero lo que quiero es verlo cuando se invoque la página desde el navegador.

No sé si me falta algo en la cabecera.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "Content-type: image/png\n\n";
print $imagen->png;
exit(1);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


O no sé si lo hago mal pero necesito que funcione desde el navegador web, no solo en la creación del archivo .PNG.

Muchísimas gracias de antemano por la ayuda.
Avatar de Usuario
charlygarcia
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2009-03-06 23:16 @011

Publicidad

Notapor explorer » 2009-03-16 13:55 @621

Creo que te falta un binmode(STDOUT); justo después del print "Content-Type...."

Hilo relativo.
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 charlygarcia » 2009-03-16 14:32 @647

Pues la verdad, sigue mostrando el mismo error. Voy a leer con más detenimiento todo lo relativo a GD pero si alguno sabe qué puede pasar les agradezco mucho la colaboración.
Avatar de Usuario
charlygarcia
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2009-03-06 23:16 @011

Notapor kidd » 2009-03-16 15:02 @668

El problema es que debes de cambiar la línea:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print $imagen->png;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


por

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print $grafico->plot(\@graf)->png;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Para que quede de la siguiente manera:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!c:\perl\bin\perl.exe -w

use GD::Graph::bars;
use strict;

my @campos  = ('Mar 2006','Abr 2006','May 2006', 'Jun 2006', 'Jul 2006');
my @valores = (547, 2282, 2798, 2354, 4326);
my @graf    = (\@campos, \@valores);
my $grafico = GD::Graph::bars->new(500, 300);

$grafico->set(
  x_label => 'Mes',
  y_label => 'Visitas Totales',
  title   => 'Visitas Mensuales',
) or warn $grafico->error;


print "Content-type: image/png\n\n";
print $grafico->plot(\@graf)->png;
exit(1);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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

muchas gracias a ambos por fin funciono....

Notapor charlygarcia » 2009-03-16 16:19 @722

realmente el problema parece que era: que faltaba la linea que propuso kidd ahora el codigo funciona perfectamente :D pero de cualquier modo segui la recomendacion de exporer de colocar la linea
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
binmode(STDOUT);
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Caso cerrado y les estoy muy agradecido pues lo que habia hecho a sin usar esta libreria es, :

http://intranetmz.tripod.com/cgi-bin/intranetmz/intranet.cgi?c=e&m=328

pero ahora debe ser mas facil y mucho mejor

Dejo el codigo que funciona perfectamente por si a alguien le puede servir y nuevamente muchas gracias:



Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!c:\perl\bin\perl.exe -w

use GD::Graph::bars;
use strict;

my @campos  = ('Mar 2006','Abr 2006','May 2006', 'Jun 2006', 'Jul 2006');
my @valores = (547, 2282, 2798, 2354, 4326);
my @graf    = (\@campos, \@valores);
my $grafico = GD::Graph::bars->new(500, 500);

$grafico->set(
  x_label => 'Mes',
  y_label => 'Visitas Totales',
  title   => 'Visitas Mensuales',
) or warn $grafico->error;


print "Content-type: image/gif\n\n";
binmode(STDOUT);
print $grafico->plot(\@graf)->gif;
#print $grafico;
exit(1);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
charlygarcia
Perlero nuevo
Perlero nuevo
 
Mensajes: 54
Registrado: 2009-03-06 23:16 @011

Notapor creating021 » 2009-03-16 17:34 @774

Tengo una duda al respecto... ¿No sería bueno hacer un autoflush al STDOUT?
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2009-03-16 17:49 @784

Según la documentación de close(), no es necesario.
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 creating021 » 2009-03-17 14:39 @652

Interesante, muchas gracias por aclararlo :)
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 14 invitados

cron