【问题标题】:Linux: launch window, capture screenLinux:启动窗口、捕获屏幕
【发布时间】:2009-01-15 17:12:27
【问题描述】:

我需要编写一个 Red Hat Linux 命令行工具来启动一个窗口并将其外观以 JPEG 格式捕获到磁盘。

通常目标机器没有显卡,但我们可以安装任何软件组件(例如 X)。

一两个问题:

您可能会为此建议哪些库或工具?

如果我使用 GTK+ 之类的东西来创建这个工具,缺少显卡会妨碍它的执行吗?

我看到了scrot,但它似乎不支持在没有用户交互的情况下捕获特定窗口。

【问题讨论】:

  • 我不知道你在这里问什么。如果您没有图形卡,则很难使用控制台或启动窗口。我猜你是指没有类似 PCI 的显卡,在这种情况下,没关系。
  • 我正在创建的程序将被服务器程序调用;不是交互式外壳或类似的东西。

标签: linux screenshot capture image-capture screen-grab


【解决方案1】:

听起来您需要为 X.org 服务器使用“virtual framebuffer" 驱动程序,并结合xwdNetPBMcjpeg 实用程序。

我不确定 X 服务器所需的特定配置,但您可能必须确保您使用的服务器具有内置的虚拟帧缓冲区驱动程序。虚拟帧缓冲驱动程序是一种显示驱动程序,就像您用来连接 NVidia 或 ATI 视频卡的驱动程序一样,只是它的“输出”是一块包含像素的内存,而不是 LCD 屏幕。

xwd 是标准的 X 工具之一,可以创建 X Window Dump。可以在命令行上告诉 xwd 要转储哪个窗口。它将时髦的“xwd”格式流输出到标准输出。

NetPBM 实用程序是一组命令行工具,可将一种图像格式转换为另一种图像格式。它包括一个转换 xwdtoppm 的功能。 PPM 是一种非常基本的非压缩格式,是大多数 NetPBM 工具都能理解的中间格式。

cjpeg 是标准 JPEG 工具集的一部分,如果您还拥有 NetPBM,则可​​能已安装。 cjpeg 可以获取 PPM 字节流并发出 JPEG 字节流。

通过 Unix 脚本和管道的魔力,您可以将这些实用程序串在一起以使用窗口启动应用程序,调用 xwd、xwdtoppm 和 cjpeg 将图像转储到文件中。

【讨论】:

    【解决方案2】:

    您可以尝试运行 vncserver 来创建虚拟 X 窗口显示 - 不需要显卡。确保将 DISPLAY 变量设置为 vncserver 启动时打印的显示编号。接下来,在创建的显示器(在 hte 后台)上启动您的应用,并使用 xwd 和数据格式化程序或 gimp 命令将屏幕图像捕获为 jpeg。

    顺便看看Command line program to create website screenshots (on Linux)的类似答案。

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 2012-08-07
      • 1970-01-01
      相关资源
      最近更新 更多