แนะนำ module ที่ช่วยในการแคปหน้าจอ

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderators: mindphp, ผู้ดูแลกระดาน

tatiya
PHP VIP Members
PHP VIP Members
Posts: 2845
Joined: 09/07/2018 9:35 am

แนะนำ module ที่ช่วยในการแคปหน้าจอ

Post by tatiya »

pyautogui เป็นโมดูลด้าน GUI automation เป็นโมดูลหนึ่งที่ช่วยอำนวยความสะดวกในการพัฒนา GUI ข้ามแพลตฟอร์ม โดยมีความสามารถดังนี้
  • - สามารถควบคุมเมาส์หรือแป้นพิมพ์ตามที่สั่งได้
  • - มีหน้าต่างแจ้งเตือนพร้อมใช้งาน
  • - สามารถจับภาพหน้าจอได้ Screenshot
  • - ใช้ BSD License
  • - รองรับทั้ง Python 2 และ Python 3
วันนี้ผมจะมาแนะนำแค่วิธีการ แคปภาพหน้าจอ หรือ จับภาพหน้าจอ นะครับ (ผมใช้งานเครื่อง Ubuntu 14.04 LTS นะครับ คิดว่าบนวินโดว์ก็น่าจะเหมือนกันครับลองดู ส่วนโค้ดที่ติดตั้งด้านล่างผมจะทำการติดตั้งโดยการเปิด Terminal ใน Pycharm นะครับ)
เริ่มต้นเลยเราต้องทำงาน ติดตั้ง module นี้เข้ามาก่อน โดยใช้คำสั่ง

Code: Select all

pip install pyautogui
ถ้าเราติดตั้งตัวนี้แล้วไม่สารถรันได้ให้ลองติดตั้ง ตั้งนี้เสริมเข้าไปนะครับ

Code: Select all

pip install Xlib
และก็มีอีก (อันนี่ผมไม่รู้ว่าวินโดว์ต้องใช้คำสั่งนี้เหมือนกันมั้ยนะครับ)

Code: Select all

sudo apt-get install scrot
ต่อไปลองรันโค้ดนี้ดูนะครับ

Code: Select all

import pyautogui
img = pyautogui.screenshot('mac.png')
img.show()
ผลลัพท์
rename.png
Image Image Image GOODBYE AND GOODLUCK EVERYONE Love you all bye. Thank you for everything.
26/09/2019

tatiya
PHP VIP Members
PHP VIP Members
Posts: 2845
Joined: 09/07/2018 9:35 am

Re: แนะนำ module ที่ช่วยในการแคปหน้าจอ

Post by tatiya »

เพิ่มเติ่มอีกตัวนะครับ

ตัวนี้ก็ใช้ได้ครับ ชื่อ pyscreenshot
วิธีติดตั้ง ทำตามตัวข้างบนก็ได้นะครับ วิธีติดตั้ง
ให้เราอัฟเดต pip ก่อน (ถ้าเราไม่เคยติดตั้ง) ตรงนี้ให้เปิดจาก terminal บนเครื่องของท่านเลยนะครับ

Code: Select all

sudo apt-get install python-pip


ต่อไปเปิด Pycharm ขึ้นมา แล้วเปิด Terminal บน Pycharm

Code: Select all

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

เรียบร้อยครับ ใช้งานได้เหมือนตัวข้างบนเลยครับ
:baa:
แนะนำเพิ่มเติ่ม
1. ต้องการเก็บภาพทั้งจอเลย

Code: Select all

import pyscreenshot as ImageGrab 
im = ImageGrab.grab()
im.show()
ผลลัพท์
testpic.png
testpic.png (110.38 KiB) Viewed 1400 times
2. ต้องการเก็บบางส่วน

Code: Select all

import pyscreenshot as ImageGrab

# ตรงนี้ใส่พิกัดที่เราต้องการให้แคปหน้าจอ
box = (10,10,500,500)

# นำพิกัดที่เราต้องการให้แคปหน้าจอ ให้ทำงาน  
im = ImageGrab.grab(box)
im.show()
ผลลัพท์
testpic1.png
testpic1.png (71.96 KiB) Viewed 1400 times
3. ต้องการเก็บภาพอ้างอิงกับเวลา

Code: Select all

import pyscreenshot as ImageGrab
import time 

box = (10,10,500,500)
fname = "mindphp"+time.strftime("%Y_%m_%d_%H_%M_%S")+".jpg" 
im = ImageGrab.grab(box)
im.save(fname,"JPEG")
ผลลัพท์
Selection_044.png
Selection_044.png (192.82 KiB) Viewed 1400 times
4. ต้องการเก็บภาพตามเวลา (time interval คือ ระยะห่างช่วงเวลาระหว่างการถ่ายภาพแต่ละเฟรมของการถ่ายทำ Time-lapse โดยนับเอาจากช่วงเริ่มต้นเปิดม่านชัตเตอร์เพื่อรับแสงในแต่ละเฟรม)

Code: Select all

import pyscreenshot as ImageGrab
import time 

box = (10,10,500,500)
for t in range(3) : 
   fname = "mindphp"+time.strftime("%Y_%m_%d_%H_%M_%S")+".jpg" 
   im = ImageGrab.grab(box)
   im.save(fname,"JPEG")
   time.sleep(1)  
ผลลัพท์ (มันก็คือการที่เรากดซัตเตอร์ รัวภาพนั้นแหละครับ)
Selection_045.png
Image Image Image GOODBYE AND GOODLUCK EVERYONE Love you all bye. Thank you for everything.
26/09/2019

Post Reply

Return to “Python Knowledge”

Who is online

Users browsing this forum: No registered users and 2 guests