如果是在 X Window 下,最簡單的方式是安裝 shutter,但這有兩個缺點,就是 shutter 相依的套件太多,所以光是截圖這個小功能就需要安裝將近 90MB 的套件,並且執行起來很慢,但使用最容易。
步驟如下:
1. 先安裝必要套件
pi@raspberrypi:~$ sudo apt-get install shutter
2. 從主要功能選單(main-menu)叫起來
3. 執行區域性的截圖、或是全螢幕的截圖等功能
如果覺的 shutter 不適合,還可以用 scrot + openbox,之後就可以按 PrtSc 直接做 snapshot。有關 scrot 的使用方式可以參考這篇。
步驟如下:
1. 先安裝必要套件
pi@raspberrypi:~$ sudo apt-get install scrot
2. 增加按鍵的繫結(key binding),將 keybind 的定義放在 <keyboard> 和 </keyboard> 之間
pi@raspberrypi:~$ vi ~/.config/openbox/lxde-rc.xml
<keybind key="Print"> <action name="Execute"> <command>scrot</command> </action> </keybind>
3. 進到桌面環境下,按 PrtSc 做 snapshot,擷取畫面的預設路徑是放在家目錄 (/home/pi) 下。
如果是在 console 底下 可以透過 cat /dev/fb0 > snapshot.raw
將 framebuffer 的資料轉存為 RGB565 的 raw 檔。但如果要用 Eye 等看圖軟體讀取,就需要將 raw 檔透過 FFmpeg 等軟體先轉為 PNG 或是 BMP 等格式。
幸運的是,我們也可以透過 vc_dispmanx_snapshot 這個函式取得目前螢幕的狀態。
Andrew Duncan 已經寫成成執行檔,下載後編譯就可以在 console 底下隨時擷取螢幕畫面。
步驟如下:
1. 先安裝必要套件
pi@raspberrypi:~$ sudo apt-get install libpng12-dev
2. 下載原始碼
pi@raspberrypi:~$ git clone https://github.com/AndrewFromMelbourne/raspi2png.git
3. 編譯
pi@raspberrypi:~$ cd raspi2png pi@raspberrypi:~$ make
4. 使用,不加任何參數時預設是存成 png 格式的檔案
pi@raspberrypi:~$ ./raspi2png
可用的參數有以下幾種,當然這指令也可以在X Window下執行。
--pngname - 抓圖後的存檔名稱(預設是 snapshot.png ) --verbose - 顯示完整資訊 --height - 圖片高度(預設是螢幕的高度) --width - 圖片寬度(預設是螢幕的寬度) --type - 圖片的色彩格式,可用的格式為 RGB565 RGB888 RGBA16 RGBA32 --delay - 多久後擷取(預設是0,立刻執行)
最後,我們最喜歡用的其實是同一個作者的 fb2png。這程式可以讀取 framebuffer 並直接儲存成 png 格式的檔案。
步驟如下:
1. 先安裝必要套件
pi@raspberrypi:~$ sudo apt-get install libpng12-dev
2. 下載原始碼
pi@raspberrypi:~$ git clone https://github.com/AndrewFromMelbourne/fb2png.git
3. 編譯
pi@raspberrypi:~$ cd fb2png pi@raspberrypi:~$ make
4. 使用
pi@raspberrypi:~$ ./fb2png
最後比較一下 raspi2png 和 fb2png,底下是相同時間的擷取結果,可以發現 raspi2png 是根據 VideoCore API 的 vc_dispmanx_display_get_info 傳回螢幕解析度,因此雖我們已經將 framebuffer 的解析度調整成 800×600,但是因為我們用的螢幕解析度是 1280×800,因此最後還是抓下 1280×800 的截圖。
而 fb2png 則是開啟 /dev/fb0 的裝置檔,並根據 fb_var_screeninfo 回傳 framebuffer 的 xres 和 yres,因此最後截圖結果會是 800×600 的解析度,比較符合我們想要的結果。