我需要编写一个Red Hat Linux命令行工具,它可以启动一个窗口,并以JPEG格式将其外观捕获到磁盘上。
目标机器通常没有显卡,但我们可以安装任何软件组件(例如X)。
问题或两个:
您可以为此建议哪些库或工具?
如果我使用像GTK +这样的东西来创建这个工具,那么缺少视频卡会阻碍它的执行吗?
我看到了scrot
,但它似乎不支持在没有用户互动的情况下捕获特定窗口。
答案 0 :(得分:4)
听起来您需要为X.org服务器使用“virtual framebuffer"驱动程序,并结合xwd,NetPBM和cjpeg 实用程序。
我不确定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将图像转储到文件中。
答案 1 :(得分:0)
您可以尝试运行vncserver来创建虚拟X窗口显示 - 无需图形卡。务必将DISPLAY变量设置为vncserver启动时打印的显示编号。接下来,在创建的显示器上启动您的应用程序(在背景中)并使用xwd和数据格式化程序或gimp命令将屏幕图像捕获到jpeg。
顺便说一下,检查Command line program to create website screenshots (on Linux)的相似答案。