X Window 視窗環境
首先介紹在 X Window 視窗環境下的畫面擷取工具。Shutter
Shutter 是一個在 X Window 下多功能的視窗畫面擷取工具,不過由於它整個程式很大,相依套件也很多,在 Raspberry Pi 這樣的硬體上執行會有點慢,不過對於不熟悉指令的人來說,也算是一個不錯的工具。Shutter 可以透過 apt 直接安裝:
sudo apt-get install shutter安裝完成後,就可以在系統的選單中看到 Shutter 這個軟體了。
Shutter 的介面很容易上手,自己玩一下就知道怎麼使用了。
Shutter 在執行之後,在系統圖示列會出現一個 Shutter 的圖示,可以方便使用者快速擷取畫面,您可以把主視窗關掉,透過這個選單來擷取畫面。
Scrot
Scrot 是一個小巧的畫面擷取工具,不會佔用系統太多的資源,又可以快速擷取畫面。Scrot 也可以利用 apt 安裝:
sudo apt-get install scrot安裝好之後,直接執行就會將目前的螢幕畫面照下來:
scrot而照下來的圖檔預設會放在家目錄中(也就是 /home/pi/ 中),依照日期與時間來命名。
scrot 指令常用的參數如下:
- -b 或 --border:當擷取單一視窗時,連同視窗框邊一併擷取。
- -c 或 --count:擷取畫面之前,顯示倒數數字。
- -d 或 --delay NUM:指定延遲擷取的秒數。
- -e 或 --exec APP:指定後續處理擷取圖檔的程式。
- -q 或 --quality NUM:指定圖片的品質(壓縮程度),可用的值為 1 到 100,預設為 75。
- -m 或 --multidisp:啟用多螢幕擷取(擷取多個螢幕的畫面後,再將其合併為一張圖)。
- -s 或 --select:使用滑鼠指定要擷取的視窗或是範圍。
- -u 或 --focused:擷取目前作用中的視窗。
- -t 或 --thumb NUM:自動產生縮圖,NUM 可指定為百分比或是實際縮圖大小(如 50x60)。
終端機(Console)環境
在終端機下我們也可以靠著一些指令工具來擷取目前的畫面。使用 /dev/fb0 與 ffmpeg
在 Linux 系統中我們可以直接透過 framebuffer(/dev/fb0)來擷取目前的畫面內容:cat /dev/fb0 > fb.raw不過這裡面的資料擷取下來之後,還要再經過 ffmpeg 轉檔之後才能使用,使用前要先安裝一下 ffmpeg:
sudo apt-get install ffmpeg再將剛剛擷取的 fb.raw 轉為 png 檔:
ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt rgb565le -s 1232x992 -i fb.raw -f image2 -vcodec png screen.png這裡產生的 screen.png 圖檔內容就是剛剛擷取的畫面。下面這張是我裁切過圖,這比起用相機照的照片清楚得多了。
這裡要注意一點,ffmpeg 在轉檔時需要使用 -s 參數指定螢幕的解析度(以這個例子來說是 1232x992),這個部分請依照您的系統設定自己更改,如果不知道自己的螢幕解析度,可以使用 fbset 來查看:
fbset -i它的輸出會像這樣
mode "1232x992"從這裡就可以看出螢幕的解析度為何。
geometry 1232 992 1232 992 16
timings 0 0 0 0 0 0 0
rgba 5/11,6/5,5/0,0/16
endmode
Frame buffer device information:
Name : BCM2708 FB
Address : 0x1c006000
Size : 2444288
Type : PACKED PIXELS
Visual : TRUECOLOR
XPanStep : 1
YPanStep : 1
YWrapStep : 0
LineLength : 2464
Accelerator : No
raspi2png
raspi2png 是 Andrew Duncan 開發的小工具,可以透過 vc_dispmanx_snapshot 擷取畫面。首先安裝 png 函式庫:
sudo apt-get install libpng12-dev從 GitHub 下載 raspi2png 的原始碼:
git clone https://github.com/AndrewFromMelbourne/raspi2png.git編譯 raspi2png:
cd raspi2png make編譯完成後,會產生 raspi2png 這個可執行檔,直接執行它就可以擷取目前的畫面:
./raspi2pngraspi2png 指令可用的參數有:
- --pngname <name>:指定輸出的 png 檔名,預設為 snapshot.png。
- --height <height>:指定圖片高度,預設為螢幕畫面高度。
- --width <width>:指定圖片寬度,預設為螢幕畫面寬度。
- --delay <delay>:指定延遲秒數,預設為 0 秒。
- --stdout:輸出至標準輸出(stdout)。
- --help:顯示說明訊息。
fb2png
fb2png 跟 raspi2png 類似,不過他是直接從 framebuffer 擷取畫面的。首先安裝 png 函式庫:
sudo apt-get install libpng12-dev從 GitHub 下載 fb2png 的原始碼:
git clone https://github.com/AndrewFromMelbourne/fb2png.git編譯 fb2png:
cd fb2png make編譯完成後,會產生 fb2png 這個可執行檔,直接執行它就可以擷取目前的畫面:
./fb2pngfb2png 指令可用的參數有:
- -p <name>:指定輸出的 png 檔名,預設為 fb.png。
- -d <device>:指定擷取的設備。
如果您對於樹莓派的應用有興趣,建議您可以繼續閱讀物聯網的相關文章。
參考資料:Raspberry Pi Spy、台灣樹莓派
沒有留言:
張貼留言