2

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

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

一两个问题:

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

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

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

4

2 回答 2

4

听起来您需要为 X.org 服务器使用“虚拟帧缓冲区”驱动程序,并结合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 将图像转储到文件中。

于 2009-01-15T17:24:30.773 回答
0

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

顺便说一句,检查Command line program to create website screenshots (on Linux)的类似答案。

于 2009-01-18T07:02:48.633 回答