ใน GNU/Linux มีวิธีจับภาพหน้าจอจากบรรทัดคำสั่ง หลายเหตุผล: ควบคุมรายละเอียดการจับภาพ (โดยเฉพาะ timing) สร้างแกลเลอรีภาพจากไฟล์วิดีโอ หรือผู้ใช้คีย์บอร์ดหนักอาจรู้สึกว่าวิธีนี้เร็วกว่า
ขึ้นอยู่กับเป้าหมายและดิสโตร มีหลายวิธีทำ เครื่องมือส่วนใหญ่ติดตั้งมาอยู่แล้ว
วิธีที่ 1: ใช้ scrot
พิมพ์ scrot กด Enter จะจับภาพทั้งเดสก์ทอป บันทึกไฟล์ใน home directory ไม่ต้องอยู่ในเทอร์มินัลจริงๆ กด Alt+F2 หรือ Super+R เปิด Run dialog พิมพ์ scrot กด Enter ก็ได้ ใช้ cd ~ และ ls ดูไฟล์ หากรันในเทอร์มินัล จะจับภาพหน้าต่างเทอร์มินัลด้วย แนะนำใช้ Run dialog แทน
ตั้งค่า delay: scrot -d 10 รอ 10 วินาที ก่อนจับภาพ มีเวลาเตรียมโปรแกรม ตั้งชื่อไฟล์ได้โดยเพิ่มชื่อหลังคำสั่ง
เพิ่ม -c เพื่อนับถอยหลัง: scrot -d 10 -c จะนับวินาทีช่วยวางแผน
สภาพแวดล้อมเดสก์ทอปสมัยใหม่ส่วนใหญ่ผูก scrot (หรือเครื่องมือ CLI อื่น) กับปุ่ม Print Screen (Prt Sc) กด Prt Sc จับภาพทั้งหน้าจอ กด Alt+Prt Sc จับหน้าต่างที่ใช้งานอยู่ แป้นพิมพ์บางแบบมี SysRq แยกจาก Prt Sc ก็อาจทำงานได้
ใช้ scrot -s จะให้วาดพื้นที่บนหน้าจอด้วยเมาส์ ได้ภาพเฉพาะพื้นที่นั้น (อาจดูแปลก/ครอปผิดปกติบ้าง)
วิธีที่ 2: ใช้ Xfce4 Screenshooter
ผู้ใช้ Debian-Xfce, Xubuntu และ Xfce4 อื่นๆ มีคำสั่ง xfce4-screenshooter ผูกกับ Prt Sc เรียกจาก CLI ได้: พิมพ์ xfce4-screenshooter ที่เทอร์มินัลหรือ Application Finder (Alt+F2 หรือ Super+R) จะได้กล่องโต้ตอบเลือกประเภทภาพ: Select Region, Entire Screen, Active Window
วิธีที่ 3: ดึงเฟรมจากวิดีโอด้วย ffmpeg
ใช้ ffmpeg สร้างแกลเลอรีภาพจากไฟล์วิดีโอ ติดตั้ง:
- Debian/Ubuntu/Mint: sudo apt-get install ffmpeg (รองรับ Raspberry Pi ด้วย)
- Fedora/Red Hat: yum install rpmbuild (as root)
- Arch: เลือก ffmpeg-git หรือ ffmpeg-full (ส่วนใหญ่ใช้ ffmpeg-git)
cd ไปโฟลเดอร์ไฟล์วิดีโอ รัน:
ffmpeg -i myMovie.avi -r 1 -f image2 shots_%06d.jpg
แทนชื่อไฟล์วิดีโอ ตัวเลขใน shots_%06d.jpg = จำนวนศูนย์นำหน้าเพื่อเรียงลำดับ ตัวเลขหลัง -r = frame rate (1 = 1 เฟรม/วินาที) ปรับค่าได้ตามต้องการ
วิธีที่ 4: ใช้ mplayer
ผู้ใช้ Lubuntu, LXLE, Trisquel Mini มี mplayer อยู่แล้ว ไม่มีติดตั้ง: sudo apt-get install mplayer
รัน mplayer -vf screenshot video_file จะเปิดหน้าต่างเล่นวิดีโอ กด s ทุกครั้งที่อยากจับภาพ จะมีข้อความบอกสถานะ เทอร์มินัลยังคงแสดงข้อความต่อไป
หรือจับภาพอัตโนมัติ:
mplayer -nosound -frames ## -vo png:z=9 myVideo.avi
แทนชื่อไฟล์ และ ## = จำนวนเฟรมที่อยากจับ แทน png ด้วย jpg หรือ gif89a ได้ (png คุณภาพดีสุด)