J'ai testé cela et cela fonctionne, mais il pourrait y avoir un moyen plus simple de passer de GdkPixbuf à un png, ce n'était que le premier que j'ai trouvé. (Il n'y a pas gdk_pixbuf_save()
)
#include <unistd.h>
#include <stdio.h>
#include <gdk/gdk.h>
#include <cairo.h>
int main(int argc, char **argv)
{
gdk_init(&argc, &argv);
GdkWindow *w = gdk_get_default_root_window();
gint width, height;
gdk_drawable_get_size(GDK_DRAWABLE(w), &width, &height);
GdkPixbuf *pb = gdk_pixbuf_get_from_drawable(NULL,
GDK_DRAWABLE(w),
NULL,
0,0,0,0,width,height);
if(pb != NULL) {
cairo_surface_t *surf = cairo_image_surface_create(CAIRO_FORMAT_RGB24,
width, height);
cairo_t *cr = cairo_create(surf);
gdk_cairo_set_source_pixbuf(cr, pb, 0, 0);
cairo_paint(cr);
cairo_surface_write_to_png(surf, "screenshot.png");
g_print("Screenshot saved to screenshot.png.\n");
} else {
g_print("Unable to get the screenshot.\n");
}
return 0;
}
vous aviez compilez comme ceci: (en supposant que vous l'enregistrer comme screenshot.c)
gcc -std=gnu99 `pkg-config --libs --cflags gdk-2.0` screenshot.c -o screenshot
Edit: les trucs pour sauver le pixbuf pourrait aussi ressembler à: (note que je n'ai pas essayé ceci, mais c'est seulement une ligne ...) Merci à kaizer.se d'avoir signalé mon échec lors de la lecture de doc: P
gdk_pixbuf_save(pb, "screenshot.png", "png", NULL, NULL);
Qu'avez-vous eu jusqu'à présent? – Ken
Eh bien, j'ai d'abord essayer avec quelques ajouts à la GTK (voir http://maemo.org/api_refs/5.0/beta/hildon/hildon-Additions-to-GTK+.html et un exemple de capture d'écran dans http: // maemo .gitorious.org/hildon/hildon/blobs/hildon-2-2/exemples/hildon-gtk-window-take-screenshot-sync.c) mais cela a apporté un enfer de dépendances, alors j'ai essayé XGetImage (http: // tronche.com/gui/x/xlib/graphics/XGetImage.html) mais ce code a besoin des librairies Xorg pour compiler ... vous pouvez voir ici un exemple de cela: http://www.codase.com/ search/call? name = xgetimage et maintenant je suis bloqué – Jessica
Traduisez-le littéralement, 'gtk.gdk.get_default_root_window' devient' gdk_get_default_root_window' etc! – u0b34a0f6ae