用C \ GTK截取屏幕截图

时间:2010-06-26 14:39:13

标签: c gtk screenshot

我正试图用C和GTK截取整个屏幕的截图。出于速度原因,我不想打电话给外部应用程序。我找到了这个Python代码(Take a screenshot via a python script. [Linux]);我只需要弄清楚如何在C中做到这一点。

2 个答案:

答案 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