Делаем скриншот с C \ GTK - PullRequest
6 голосов
/ 26 июня 2010

Я пытаюсь сделать скриншот всего экрана с C и GTK. Я не хочу звонить во внешнее приложение по соображениям скорости. Я нашел код Python для этого ( Сделать снимок экрана с помощью скрипта Python. [Linux] ); Мне просто нужно выяснить, как это сделать в C.

Ответы [ 2 ]

10 голосов
/ 01 июля 2010

Посмотрев код 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 голос
/ 07 марта 2019

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

...