Salut à tous !
Bon alors j'aimerais faire de simples manipulations de pixels dans mon apli GTK+.
A priori rien de bien compliqué, puisqu'il existe les GdkPixbuf.
En effet je me disais que vu leur nom, ils me permettraient de récupérer un buffer de pixel ?
Bah j'ai beau parcourir la toile, personne est capable de m'expliquer comment on fait ^^
Il existe bien une fonction gdk_get_pixel, mais qui renvoie un guchar*, qui semble se manier de bien étrange facon pour récupérer ce que l'on cherche.
Tout ce que j'ai trouvé, c'est une fonction pour mettre un pixel dans un pixbuf :
Mais j'arrive pas à comprendre ce que l'on récupére et comment on le manie
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 void put_pixel (GdkPixbuf *pixbuf, int x, int y, guchar red, guchar green, guchar blue, guchar alpha) { int width, height, rowstride, n_channels; guchar *pixels, *p; n_channels = gdk_pixbuf_get_n_channels (pixbuf); g_assert (gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB); g_assert (gdk_pixbuf_get_bits_per_sample (pixbuf) == 8); g_assert (gdk_pixbuf_get_has_alpha (pixbuf)); g_assert (n_channels == 4); width = gdk_pixbuf_get_width (pixbuf); height = gdk_pixbuf_get_height (pixbuf); g_assert (x >= 0 && x < width); g_assert (y >= 0 && y < height); rowstride = gdk_pixbuf_get_rowstride (pixbuf); pixels = gdk_pixbuf_get_pixels (pixbuf); p = pixels + y * rowstride + x * n_channels; p[0] = red; p[1] = green; p[2] = blue; p[3] = alpha; }
Et même si je voulais utiliser aveuglément la fonction, bah la je sais modifier les données d'un pixel, mais pas les obtenir.
Si quelqu'un voit de quoi il retourne, merci d'avance de m'expliquer
Skip
Partager