屏幕截图/屏幕抓取程序如何在运行 X 的 POSIX 系统上工作?

Con*_*ack 3 xorg x11 screenshot

  1. gnome-screenshotxfce4-screenshooter屏幕截图程序如何获取数据?
  2. 他们如何访问监视器/屏幕的二维像素矩阵流?
  3. 是否可以在多显示器设置中仅流式传输特定显示器的数据?我想将数据通过管道传输到我正在尝试编写的程序中,该程序将是用于多计算机/显示器设置的 FOSS 程序/脚本。

aye*_*kat 5

对于问题1和2,我将采取野生猜测它们正在访问通过根窗口的绘制RootWindow(3) ,然后使用XGetImage(3)复制根窗口的像素数据的某处,以进一步处理它(例如,它倾倒到PNG)。

这些手册页可能有帮助: XOpenDisplay (3)DefaultScreen (3)RootWindow (3)XGetImage (3)

另请参阅StackOverflow 上的这个问题

对于问题3,如果使用Xinerama,会出现多个屏幕,应用程序可以获取每个屏幕的位置和大小信息,这对于选择要复制的区域再次很有用XGetImage(...)

当然,这一切都假设您使用的是 Xlib。我听说有一个更好的替代方案,称为XCB,但到目前为止我个人从未使用过它。