【问题标题】:Taking a screenshot with C\GTK使用 C\GTK 截图
【发布时间】:2011-03-08 15:26:16
【问题描述】:

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

【问题讨论】:

  • 看起来您链接到的 Python 代码是您需要在 C 中使用的 GTK API 调用的一个很好的参考。
  • 嗯,你是对的。在这和 gnome-screenshot 代码之间,我已经弄清楚了。谢谢。
  • @kaizer.se 不是同一个问题,但我对那个问题的回答可以作为对这个问题的回答:P

标签: c gtk screenshot


【解决方案1】:

在查看了 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;
}

这似乎工作得很好。谢谢!

【讨论】:

  • 不幸的是,这已经完全过时了,并且从 3.10 开始删除了 API
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    相关资源
    最近更新 更多