2009-01-15 120 views
2

我需要編寫一個Red Hat Linux命令行工具來啓動一個窗口並以JPEG的形式捕獲它的外觀。Linux:啓動窗口,捕獲屏幕

通常目標機器沒有圖形卡,但我們可以安裝任何軟件組件(例如X)。

兩個問題:

你可能會認爲這是什麼庫或工具?

如果我要使用類似GTK +的東西來創建這個工具,那麼缺乏視頻卡會妨礙它的執行?

我看到了scrot,但它似乎並不支持在沒有用戶交互的情況下捕獲特定的窗口。

+0

我不知道你在問什麼。如果您沒有圖形卡,則使用控制檯或啓動窗口將非常困難。我想你是指沒有像PCI一樣的PCI卡,在這種情況下,這並不重要。 – Eldelshell 2009-01-15 17:23:43

回答

4

這聽起來像你需要使用「virtual framebuffer"驅動程序X.org的服務器,與xwdNetPBM,並且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將圖像轉儲到文件。

0

您可能會嘗試運行vncserver來創建虛擬X窗口顯示 - 不需要顯卡。確保將DISPLAY變量設置爲在vncserver啓動時打印的顯示編號。接下來,在創建的顯示器上(在背景中)啓動您的應用程序,並使用xwd與數據格式化程序或gimp命令將屏幕圖像捕獲到jpeg。

順便說一下,檢查Command line program to create website screenshots (on Linux)的相似答案。