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+ Discussion :

Appel aux pros de GTK et manipulation des images. J'avance pas !


Sujet :

GTK+

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 24
    Points
    24
    Par défaut Appel aux pros de GTK et manipulation des images. J'avance pas !
    Bonjour Bonjour,

    Voici ce que je souhaite faire :
    1 Charger un png
    2 cliquer 4 points sur l'image
    3 Créer un masque (quadrilatère) afin de faire un et logique avec mon image
    4 Sauvegarder l'image

    Ce que j'ai réussi à faire :
    a) Charger le png dans un GTK_IMAGE
    b) Enregistrer un pixbuf
    c) j'ai les coordonnées de mon quadrilatère

    Ce que je ne comprends pas :
    Le masque doit être un gdk_pixmap, gtk_pixmap, gdk_pixbuf, gtk_pixbuf?
    Pour le et logique, mon image originale doit être un gdk_pixmap, gtk_pixmap, gdk_pixbuf, gtk_pixbuf?

    Le cooooode :
    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
    // On récupère l'image dans un pixbuf
               if ( !(pix_buf = gtk_image_get_pixbuf(GTK_IMAGE(ps_Struct->p_image[i]))))
               {
                   printf("Erreur get pixbuf 1\n");
               }
    
              // Creation du masque (pixmap), myWin est un gdk_window, a priori le parent on s'en fout puisque c'est pour le ET logique
               if (!( pix_map  =  gdk_pixmap_new(myWin,
                               gdk_pixbuf_get_width(GDK_PIXBUF(pix_buf)),
                               gdk_pixbuf_get_height(GDK_PIXBUF(pix_buf)),
                                                 gdk_visual_get_system()->depth)))
               {
    
                   printf("Erreur new pixmap\n");
               }
    
              // Dessin de mon quadrilatere sur le masque :
               gdk_draw_rectangle (pix_map,
                          pWidget->style->white_gc,
                          TRUE,
                          0, 0, 40, 40);
    
             // Comment convoluer mon masque avec l'image? dois-je avoir 2 pixbuf ou 2 pixmap?
          
    
            // Enregistrement du pixbuf :
    
           if( !gdk_pixbuf_save(pix_buf, c_chemin_complet, "jpeg", (GError **) err, "quality", "100", NULL) )
    	{
                printf("Erreur save pixbuf\n");
            }
    Je craque, j'ai vraiment du mal à saisir le mécanisme de dessin GTK

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Si je comprends bien tu désires recopier une partie de l'image d'origine en faisant un & du quadrilatère avec la valeur 1. Il me semble que la fonction suivante devrait suffire à tes besoins :
    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
    GdkPixbuf*          gdk_pixbuf_new_subpixbuf            (GdkPixbuf *src_pixbuf,
                                                             int src_x,
                                                             int src_y,
                                                             int width,
                                                             int height);
     
    Creates a new pixbuf which represents a sub-region of src_pixbuf. The new pixbuf shares its pixels with the original pixbuf, so writing to one affects both. The new pixbuf holds a reference to src_pixbuf, so src_pixbuf will not be finalized until the new pixbuf is finalized.
     
    src_pixbuf :
    	a GdkPixbuf
     
    src_x :
    	X coord in src_pixbuf
     
    src_y :
    	Y coord in src_pixbuf
     
    width :
    	width of region in src_pixbuf
     
    height :
    	height of region in src_pixbuf
     
    Returns :
    	a new pixbuf

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 24
    Points
    24
    Par défaut
    Merci pour ta réponse, je zieute ceci au retour des ponts et tout ^^

Discussions similaires

  1. manipuler des images
    Par Phenix789 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 28/11/2007, 21h51
  2. Réponses: 2
    Dernier message: 06/05/2007, 22h37
  3. Meilleure methode pour manipuler des images
    Par etranger dans le forum Modules
    Réponses: 2
    Dernier message: 16/02/2007, 13h06
  4. [VBA-E]Manipuler des images
    Par nils.angot dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/02/2006, 10h59

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