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

GTK+ avec C & C++ Discussion :

probleme chargement image sous windows


Sujet :

GTK+ avec C & C++

  1. #1
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut probleme chargement image sous windows
    bonjours,
    j'arrive pas a charger une image dans mon interface , je l'ai mis dans le répertoire de mon prog , et j'ai utilisé cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    GtkWidget *image;
        image = gtk_image_new_from_file ("266.gif");
        gtk_box_pack_start (GTK_BOX(pVBox2), image, TRUE, TRUE, 0);
    mais je vois qu'un truc barré en rouge et pas mon image ...!!!

    est ce que c'est par ce que je travail sous windows !!

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Une croix rouge signifie qu'il n'a pû chager l'image et ce pour diverses raisons, soit il la trouve pas, soit le format n'est pas bon, l'image est corrompue, etc... Il faudrait tester avec une autre image ou bien utiliser l'autre méthode de chargement qui consiste à utiliser d'autre fonctions soit dans l'ordre:

    gdk_pixbuf_new_from_file pour charger l'image, met également l'adresse d'un pointeur sur une structure de type GError, ceci te permettra de connaître éventuellement les raisons de l'échec du chargement si tu le test bien sûr !

    gtk_image_new_from_pixbuf pour créer un widget GtkImage à partir du GdkPixbuf.

    Il ne faut pas non plus oublier de libérer l'image au moins après l'avoir mise dans le GtkImage. La libération se fait avec la fonction: gdk_pixbuf_unref


    Au moins grâce à cette méthode tu connaîtra les raisons qui font que l'image ne s'affiche pas

  3. #3
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    j'ai essayé de faire ca , mais ca donne rien, rien ne s'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        GError **err;
        GdkPixbuf* pxbf= gdk_pixbuf_new_from_file ("266.gif",&err);
        GtkWidget * image = gtk_image_new_from_pixbuf (pxbf);
     
        gtk_box_pack_start (GTK_BOX(pVBox2), image, TRUE, TRUE, 0);
    il m'envoi ce warning
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    main.c:177: warning: passing arg 2 of `gdk_pixbuf_new_from_file_utf8' from incompatible pointer type

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,

    Ce n'est pas :
    Citation Envoyé par coax81
    Mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        GError *err;
    [...]
    g_print (err->message)

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Ouais j'ai pas expliqué mais je pensais que ca coulait de source

    Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    GError * err = NULL;
     
    GdkPixbuf * pxbf = gdk_pixbuf_new_from_file ("266.gif",&err);
     
    if (err != NULL)
    {
       g_printf ("%s\n", err->message);
       g_error_free (err);
    }
    else
    {
       GtkWidget * image = gtk_image_new_from_pixbuf (pxbf);
       gtk_box_pack_start (GTK_BOX(pVBox2), image, TRUE, TRUE, 0);
    }

  6. #6
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    desole , je suis debutant ...
    mais j'ai copié le code , et il y a rien qui s'affiche...

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par coax81
    desole , je suis debutant ...
    mais j'ai copié le code , et il y a rien qui s'affiche...
    Pas d'erreurs sur la console ?

  8. #8
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    non aucune erreure ,et on vois rien , meme pas l'image avec la crois rouge , rien qui s'affiche !!

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Bizzare en effet car je ne vois pas de problèmes particulier, teste vois avec ce code sait-on jamais:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    #include <gtk/gtk.h>
    #include <glib/gprintf.h>
     
     
    int main (int argc, char ** argv)
    {
       GtkWidget * p_win = NULL;
       GtkWidget * p_box = NULL;
       GtkWidget * p_img = NULL;
       GdkPixbuf * p_pix = NULL;
       GError    * p_err = NULL;
     
     
       gtk_init (& argc, & argv);
     
     
       p_win = gtk_window_new           (GTK_WINDOW_TOPLEVEL);
       gtk_window_set_default_size      (GTK_WINDOW (p_win), 200, 200);
       gtk_container_set_border_width   (GTK_CONTAINER (p_win), 5);
       gtk_window_set_position          (GTK_WINDOW (p_win), GTK_WIN_POS_CENTER);
     
       p_box = gtk_vbox_new (FALSE, 0);
       gtk_container_add (GTK_CONTAINER (p_win), p_box);
     
     
       p_pix = gdk_pixbuf_new_from_file ("266.gif", &p_err);
     
       if (p_pix == NULL)
       {
          g_printf ("%s\n", p_err->message);
          g_error_free (p_err);
       }
       else
       {
          p_img = gtk_image_new_from_pixbuf (p_pix);
          gtk_box_pack_start (GTK_BOX (p_box), p_img, TRUE, TRUE, 0);
          gdk_pixbuf_unref (p_pix);
       }
     
     
       g_signal_connect (
          G_OBJECT (p_win), "destroy", G_CALLBACK (gtk_main_quit), NULL
       );
     
     
       gtk_widget_show_all (p_win);
       gtk_main ();
     
     
       return 0;
    }
    Sinon cela pourrait peut-être venir de ton GIF, peut-être est-il dans un format ou palette non pris en charge mais ca je n'en sais rien du tout, as-tu essayé avec un autre format de fichier genre PNG ou JPEG ?

  10. #10
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    j'ai ressaiyé avec une autre image de type PNG , mais bizzarement toujours rien qui s'affiche...

    j'ai bien mis l'image dans le répertoire de mon exe!!

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par coax81
    j'ai ressaiyé avec une autre image de type PNG , mais bizzarement toujours rien qui s'affiche...

    j'ai bien mis l'image dans le répertoire de mon exe!!
    Alors là je suis largué....



    PS: Au pire montre voir ton code...

  12. #12
    Membre du Club Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Points : 40
    Points
    40
    Par défaut
    j'ai fais le prog de teste que tu m'a donné , et rien !!!


    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
     
     
    #include <gtk/gtk.h>
    #include <glib/gprintf.h>
     
    int main (int argc, char ** argv)
    {
    GtkWidget * p_win = NULL;
    GtkWidget * p_box = NULL;
    GtkWidget * p_img = NULL;
    GdkPixbuf * p_pix = NULL; GError * p_err = NULL;
    gtk_init (& argc, & argv);
    p_win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size (GTK_WINDOW (p_win), 200, 200);
    gtk_container_set_border_width (GTK_CONTAINER (p_win), 5);
    gtk_window_set_position (GTK_WINDOW (p_win), GTK_WIN_POS_CENTER);
    p_box = gtk_vbox_new (FALSE, 0);
    gtk_container_add (GTK_CONTAINER (p_win), p_box);
    p_pix = gdk_pixbuf_new_from_file ("tuxubuntu2.PNG", &p_err);
    if (p_pix == NULL)
    {
    	g_printf ("%s\n", p_err->message);
    	g_error_free (p_err);
    }
    else
    {
    	p_img = gtk_image_new_from_pixbuf (p_pix);
    	gtk_box_pack_start (GTK_BOX (p_box), p_img, TRUE, TRUE, 0);
    	gdk_pixbuf_unref (p_pix);
    }
    g_signal_connect (  G_OBJECT (p_win), "destroy", G_CALLBACK (gtk_main_quit), NULL  );
    gtk_widget_show_all (p_win); gtk_main ();
    return 0;
    }

  13. #13
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par coax81
    j'ai fais le prog de teste que tu m'a donné , et rien !!!
    Ha, et comment tu arrives d'un code bien aéré comme le mien à code condensé comme le tiens ? Il faut aérer ton code, là c'est pas spécialement pratique et facile à lire, ceci peut causer des pertes de points dans certains examens, j'ai déjà vu ca alors il va falloir faire un effort, autant pour toi que pour nous

    Pour ton problème, franchement je ne vois pas pour le moment, peut être que quelqu'un qui est sous Windows pourra-t-il tester !

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 34
    Points : 28
    Points
    28
    Par défaut
    Bonjour à vous. Je constate le même problème, à savoir impossible de charger l'image (un fichier blanc avec une croix rouge s'affiche). J'ai essayé en jpg et en png: rien . Changé la taille de la fenêtre: rien . Je ne sais pas si cela vient de la dernière version de gtk+... Donc si quelqu'un a eu le même problème et a su le résoudre merci d'avance .

  15. #15
    Candidat au Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut le chemin
    en fait je crois que c'est "./266.gif"

  16. #16
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 204
    Points : 82
    Points
    82
    Par défaut
    Même problème pour moi :'(

Discussions similaires

  1. probleme affichage image sous Firefox
    Par yorkknew dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 07/09/2008, 18h23
  2. [PG FONCTION C] Probleme palloc.h sous windows
    Par VASAPANCH dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 10/07/2008, 10h02
  3. probleme script perl sous windows
    Par wirgilus dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2008, 11h34
  4. problème chargement image sous linux
    Par corrupt3d dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 16/06/2007, 16h25
  5. Probleme de démarrage sous windows 98
    Par Le Pharaon dans le forum Windows 2000/Me/98/95
    Réponses: 14
    Dernier message: 03/05/2005, 14h05

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