การทำ Screen Capture บน Raspberry Pi ด้วยภาษา Python

บ่อยครั้งที่เวลาเขียนบทความเราต้องใช้ภาพจากหน้าจอมาประกอบ ในกรณีของ Raspberry Pi นั้นจะพบหลายต่อหลายบทความแนะนำการใช้งานซอฟต์แวร์ทีื่ชื่อว่า scrot [1][2] ใช้งานง่ายและมีคุณสมบัติเพียงพอ แต่ในบทความนี้จะกล่าวถึงวิธีที่ต่างออกไปคือการเขียนโปรแกรมด้วยภาษา Python แทนครับ

การเขียนโปรแกรมเองจะมีความไม่สะดวกอยู่บ้าง อีกทั้งการสร้างโปรแกรมให้มีคุณสมบัติเหมือนกับซอฟต์แวร์อย่าง scrot ย่อมใช้เวลานาน แต่ก็มีข้อดีคือเราสามารถกำหนดคุณสมบัติที่แตกต่างได้ เช่น การนำส่งภาพผ่านอินเตอร์เน็ต เป็นต้น

มีหลายวิธีสำหรับภาษา Python ที่ใช้จับภาพหน้าจอ แต่ทั้งหมดจะอาศัย Python Image Library (PIL) เป็นพื้นฐาน ตัวที่ผมจะใช้งานในคราวนี้คือ pyscreenshot ครับ  ใช้งานง่าย เขียนโปรแกรก็สั้นมาก เราสามารถดึงเอาคุณสมบัติของ PIL มาใช้ประยุกต์กับงานได้อีกด้วย

ติดตั้ง


1. ติดตั้ง pip (หากไม่เคยติดตั้งมาก่อน)

$ sudo apt-get install python-pip


2. ติดตั้ง pyscreenshot

$ sudo pip install pyscreenshot

หมายเหตุ บางเอกสารอาจแนะนำให้ติดตั้ง python-pil ด้วย แต่เนื่องจาก python-pil เป็น standard library และมีการติดตั้งมาพร้อมแล้วใน Raspian ทุกรุ่นแล้ว จึงข้ามขั้นตอนนี้ไปได้

เขียนโปรแกรมกัน


1. ต้องการเก็บภาพทั้งจอเลย


import pyscreenshot as ImageGrab

# capture entire screen  
im = ImageGrab.grab()
im.show()


2. ต้องการเก็บบางส่วน


import pyscreenshot as ImageGrab

# define part of screen
box = (10,10,500,500)

# capture  part of screen  
im = ImageGrab.grab(box)
im.show()


3. ต้องการเก็บไว้ในไฟล์

import pyscreenshot as ImageGrab

# capture entire screen  
im = ImageGrab.grab()
im.save("entir_screen.jpg","JPEG")


4. ต้องการเก็บภาพอ้างอิงกับเวลา


import pyscreenshot as ImageGrab
import time 

box = (10,10,500,500)
fname = "screen_shot_"+time.strftime("%Y_%m_%d_%H_%M_%S")+".jpg" 
im = ImageGrab.grab(box)
im.save(fname,"JPEG")


5. ต้องการเก็บภาพตามเวลา (time interval)


import pyscreenshot as ImageGrab
import time 

box = (10,10,500,500)
for t in range(3) : 
   fname = "screen_shot_"+time.strftime("%Y_%m_%d_%H_%M_%S")+".jpg" 
   im = ImageGrab.grab(box)
   im.save(fname,"JPEG")
   time.sleep(1)  

ตัวอย่างภาพ
 




[1] http://thepihut.com/blogs/raspberry-pi-tutorials/16018008-how-to-take-screenshots-on-the-raspberry-pi

[2] http://www.raspberrypi-spy.co.uk/2013/10/how-to-take-screenshots-on-the-raspberry-pi/
Previous
Next Post »