我正试图用C和GTK截取整个屏幕的截图。出于速度原因,我不想打电话给外部应用程序。我找到了这个Python代码(Take a screenshot via a python script. [Linux]);我只需要弄清楚如何在C中做到这一点。
答案 0 :(得分:10)
在查看GNOME-Screenshot代码和Python示例后,我想出了这个:
GdkPixbuf * get_screenshot(){
GdkPixbuf *screenshot;
GdkWindow *root_window;
gint x_orig, y_orig;
gint width, height;
root_window = gdk_get_default_root_window ();
gdk_drawable_get_size (root_window, &width, &height);
gdk_window_get_origin (root_window, &x_orig, &y_orig);
screenshot = gdk_pixbuf_get_from_drawable (NULL, root_window, NULL,
x_orig, y_orig, 0, 0, width, height);
return screenshot;
}
这似乎完美无缺。谢谢!
答案 1 :(得分:0)
已经过去9年,并且如上所述,API已被删除。
据我了解,目前在Linux上执行此操作的最低要求是:
GdkWindow * root;
GdkPixbuf * screenshot;
gint x, y, width, height;
root = gdk_get_default_root_window ();
gdk_window_get_geometry (root, &x, &y, &width, &height);
screenshot = gdk_pixbuf_get_from_window (root, x, y, width, height);
// gdk_pixbuf_save...
这是经过非常轻微的测试,可能会失败。进一步的阅读在gnome-screenshooter repo
中