IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

DBD::Chart::Plot me crée un fichier image vide


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut DBD::Chart::Plot me crée un fichier image vide
    Bonjour à Tous,

    Je souhaite utiliser le module DBD::Chart::Plot pour réaliser des graphiques mais malheureusement, il me crée des fichiers vides. J'utilise MS Windows Vista, Perl 5.8.8 et Apache 2.2.4

    Voici, ci-dessous, le code Perl, le message affiché dans le navigateur web et les messages d'erreurs du fichier error.log du dossier logs d'Apache:

    1. Code Perl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!C:\Perl\bin\perl.exe -w
    use strict;
     
    use CGI;
    my $cgi = new CGI;
    use CGI::Carp qw(fatalsToBrowser);
     
    use GD;
    use GD::Graph;
     
    use DBD::Chart;
    use DBD::Chart::Plot;
     
    my @xdata = qw( -3  -2  -1  0  1  2  3 );
    my @ydata = qw(  9   4   1  12  1  4  9 );
     
    #Create an image object: new()
    my $img = DBD::Chart::Plot->new();
    my $anotherImg = DBD::Chart::Plot->new();
     
    #Graph-wide options: setOptions()    
    $img->setOptions (
            title => 'My Graph Title',
            xAxisLabel => 'my X label',
            yAxisLabel => 'my Y label' );
     
    #Establish data points: setPoints()    
    $img->setPoints(\@xdata, \@ydata);
     
    #Draw the image: plot()   
    open (WR,'>plot.png') or die ("Failed to write file: $!");
    binmode WR;            # for DOSish platforms
    print WR $img->plot();
    close WR;
     
    print "Content-type: image/png\n\n";
    print "\r\n";         # for DOSish platforms
    binmode (STDOUT);
    print  $img->plot();
    2. Message du navigateur web:

    L'image “http://localhost/cgi-bin/essaitemplategd.pl” ne peut être affichée car elle contient des erreurs.
    3. Message d'erreurs du fichier error.log d'Apache
    [Sat May 10 10:15:23 2008] [error] [client 127.0.0.1] [Sat May 10 10:15:23 2008] essaitemplategd.pl: Use of uninitialized value in numeric eq (==) at C:/Perl/site/lib/DBD/Chart/Plot.pm line 1538., referer: http://localhost/simulation_fichiers/menusimulation.htm
    [Sat May 10 10:15:23 2008] [error] [client 127.0.0.1] [Sat May 10 10:15:23 2008] essaitemplategd.pl: Use of uninitialized value in numeric eq (==) at C:/Perl/site/lib/DBD/Chart/Plot.pm line 1538., referer: http://localhost/simulation_fichiers/menusimulation.htm
    [Sat May 10 10:15:23 2008] [error] [client 127.0.0.1] [Sat May 10 10:15:23 2008] essaitemplategd.pl: Use of uninitialized value in numeric eq (==) at C:/Perl/site/lib/DBD/Chart/Plot.pm line 1548., referer: http://localhost/simulation_fichiers/menusimulation.htm
    [Sat May 10 10:15:23 2008] [error] [client 127.0.0.1] [Sat May 10 10:15:23 2008] essaitemplategd.pl: Use of uninitialized value in numeric eq (==) at C:/Perl/site/lib/DBD/Chart/Plot.pm line 1562., referer: http://localhost/simulation_fichiers/menusimulation.htm
    [Sat May 10 10:15:23 2008] [error] [client 127.0.0.1] [Sat May 10 10:15:23 2008] essaitemplategd.pl: Use of uninitialized value in numeric eq (==) at C:/Perl/site/lib/DBD/Chart/Plot.pm line 1562., referer: http://localhost/simulation_fichiers/menusimulation.htm
    [Sat May 10 10:15:23 2008] [error] [client 127.0.0.1] [Sat May 10 10:15:23 2008] essaitemplategd.pl: Use of uninitialized value in print at C:/WWW/Apache/cgi-bin/essaitemplategd.pl line 33., referer: http://localhost/simulation_fichiers/menusimulation.htm
    Le fichier plot.png est effectivement créé mais il ne contient aucune image. Par ailleurs, j'ai obtenu le même résultat lorsque je charge les données à partir de fichiers externes. Je souhaiterais bénéficier de votre aide pour résoudre ce problème. Merci d'avance.

  2. #2
    Membre expérimenté Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Par défaut
    ton message à peu de chance de trouver des réponses ici il faut poser ta question dans Modules

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    T'as de la chance, je me suis penché sur ce module il y a quelque jours.
    En fait, il y a un léger bug non mentionné dans la doc du module.
    Il faut en fait spécifier le nom du format de l'image dans la méthode plot et tout fonctionnera correctement.

    Faut que je le dise au concepteur du module pour faire la modification.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print WR $img->plot("png");
    Voilà

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut
    Citation Envoyé par djibril Voir le message
    T'as de la chance, je me suis penché sur ce module il y a quelque jours.
    En fait, il y a un léger bug non mentionné dans la doc du module.
    Il faut en fait spécifier le nom du format de l'image dans la méthode plot et tout fonctionnera correctement.

    Faut que je le dise au concepteur du module pour faire la modification.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print WR $img->plot("png");
    Voilà



    Merci Monsieur Djibril pour votre réponse. Malheureusement, le graphique ne se crée toujours pas. Le problème démeure. Le fichier des erreurs d'Apache indique que l'on utilise une variable non initialisée juste au niveau de la ligne
    print WR $img->plot("png");
    En ommettant "png", j'obtiens encore la même erreur. Le message d'erreur est le suivant:
    Use of uninitialized value in print at C:/WWW/Apache/cgi-bin/essaidbdchartplot.pl line 33.
    .

    Je vous remercie pour votre attention.

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bonjour Monsieur ALLMAG54,

    Alors je t'ai fais un script pour ton image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #!C:\Perl\bin\perl.exe
    use strict;
    use warnings;
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
    use GD;
     
    use DBD::Chart::Plot;
    my $cgi = new CGI;
     
    my @xdata = qw( -3  -2  -1  0  1  2  3 );
    my @ydata = qw(  9   4   1  12  1  4  9 );
     
    #Create an image object: new()
    my $img = DBD::Chart::Plot->new() or die("probleme creation objet, $!\n");;
     
    #Establish data points: setPoints()    
    $img->setPoints(\@xdata, \@ydata, "Points Noline black") or die("souci de points $!");
     
    # set options
    $img->setOptions (
            title => 'My Graph Title',
            xAxisLabel => 'my X label',
            yAxisLabel => 'my Y label',
    );
     
    print $cgi->header(-type  =>"image/png");
    print $img->plot("png");
    Le tien ne fonctionnait pas pour 2 raisons :
    1 - Dans la méthode setOptions tu dois mettre un 3eme argument pour spécifier le type de point et la couleur.
    ex :
    2 - Ensuite, faut mettre le format de l'image en argument dans la méthode plot.

    Voilà, je trouve que la doc du module manque de clarté à ce niveau, j'ai écrit au concepteur, mais je n'ai pas eu de réponse.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut
    Citation Envoyé par djibril Voir le message
    Bonjour Monsieur ALLMAG54,

    Alors je t'ai fais un script pour ton image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #!C:\Perl\bin\perl.exe
    use strict;
    use warnings;
    use CGI;
    use CGI::Carp qw(fatalsToBrowser);
    use GD;
     
    use DBD::Chart::Plot;
    my $cgi = new CGI;
     
    my @xdata = qw( -3  -2  -1  0  1  2  3 );
    my @ydata = qw(  9   4   1  12  1  4  9 );
     
    #Create an image object: new()
    my $img = DBD::Chart::Plot->new() or die("probleme creation objet, $!\n");;
     
    #Establish data points: setPoints()    
    $img->setPoints(\@xdata, \@ydata, "Points Noline black") or die("souci de points $!");
     
    # set options
    $img->setOptions (
            title => 'My Graph Title',
            xAxisLabel => 'my X label',
            yAxisLabel => 'my Y label',
    );
     
    print $cgi->header(-type  =>"image/png");
    print $img->plot("png");
    Le tien ne fonctionnait pas pour 2 raisons :
    1 - Dans la méthode setOptions tu dois mettre un 3eme argument pour spécifier le type de point et la couleur.
    ex :
    2 - Ensuite, faut mettre le format de l'image en argument dans la méthode plot.

    Voilà, je trouve que la doc du module manque de clarté à ce niveau, j'ai écrit au concepteur, mais je n'ai pas eu de réponse.

    Grand Merci Djibril. Je ne sais plus combien de temps j'ai passé sur ce module.
    Tu viens de me sauver. Je te suis redevable.
    Une dernière question: pour la programmation en Perl, est-il préférable de travailler sous Linux ou sous Windows?

    Encore merci et bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  2. ouverture s un fichier image
    Par harris_macken dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 21/09/2005, 07h33
  3. Date fichier image
    Par Aphyo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/08/2005, 23h03
  4. Imprimer fichiers images en ligne de commande
    Par naholyr dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 02/09/2004, 18h11
  5. Comment lire un fichier image
    Par Charlemagne dans le forum DirectX
    Réponses: 9
    Dernier message: 12/03/2004, 00h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo