【发布时间】:2010-06-24 16:46:58
【问题描述】:
我正在尝试在 X 下制作一个不可见窗口的屏幕截图。
我的第一次尝试是使用xwd 或import(来自ImageMagick)捕获窗口。
不幸的是,当窗口在其他一些窗口下时,隐藏的部分是黑色的。
更糟糕的是,当窗口不在当前桌面上时,我会收到 BadMatch 错误。
下一个想法是使用 Xnest,它会为这个应用程序创建一个新的 X 实例,并且它总是在顶部。我遇到了其他问题。 Xnest 不支持 OpenGL。
在 google 上进行一些搜索,我发现 [Xephyr][1] 确实支持 OpenGL...但不支持硬件加速,因此它不可接受,因为它会杀死我的 CPU。
Xvfb 也是如此,它也使用 CPU 来渲染 OpenGL。以下是glxinfo 的部分输出:
我唯一能想到的就是以某种方式使用 Xlib 来强制我的 X 服务器将窗口渲染到 pixbuf。不幸的是,我对 Xlib 几乎一无所知。
所以我的问题是如何从在 X 下使用 OpenGL 的应用程序的不可见窗口获取屏幕截图?
目前我只能使用 [Python-Xlib][2] 和 PIL 制作屏幕截图。 也可以接受任何其他使用 Python 或 C 的解决方案。
【问题讨论】:
-
在GL应用中只使用glReadPixels有什么问题?
-
我没有源代码。
标签: screenshot x11 xlib