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

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

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

tatiya
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 512
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

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

โพสต์โดย tatiya » 30/08/2018 3:58 pm

pyautogui เป็นโมดูลด้าน GUI automation เป็นโมดูลหนึ่งที่ช่วยอำนวยความสะดวกในการพัฒนา GUI ข้ามแพลตฟอร์ม โดยมีความสามารถดังนี้

    - สามารถควบคุมเมาส์หรือแป้นพิมพ์ตามที่สั่งได้
    - มีหน้าต่างแจ้งเตือนพร้อมใช้งาน
    - สามารถจับภาพหน้าจอได้ Screenshot
    - ใช้ BSD License
    - รองรับทั้ง Python 2 และ Python 3

วันนี้ผมจะมาแนะนำแค่วิธีการ แคปภาพหน้าจอ หรือ จับภาพหน้าจอ นะครับ (ผมใช้งานเครื่อง Ubuntu 14.04 LTS นะครับ คิดว่าบนวินโดว์ก็น่าจะเหมือนกันครับลองดู ส่วนโค้ดที่ติดตั้งด้านล่างผมจะทำการติดตั้งโดยการเปิด Terminal ใน Pycharm นะครับ)
เริ่มต้นเลยเราต้องทำงาน ติดตั้ง module นี้เข้ามาก่อน โดยใช้คำสั่ง

โค้ด: เลือกทั้งหมด

pip install pyautogui


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

โค้ด: เลือกทั้งหมด

pip install Xlib


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

โค้ด: เลือกทั้งหมด

sudo apt-get install scrot


ต่อไปลองรันโค้ดนี้ดูนะครับ

โค้ด: เลือกทั้งหมด

import pyautogui
img = pyautogui.screenshot('mac.png')
img.show()


ผลลัพท์
rename.png

tatiya
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 512
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

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

โพสต์โดย tatiya » 30/08/2018 5:10 pm

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

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

โค้ด: เลือกทั้งหมด

sudo apt-get install python-pip




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

โค้ด: เลือกทั้งหมด

pip install pyscreenshot


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

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

โค้ด: เลือกทั้งหมด

import pyscreenshot as ImageGrab
im = ImageGrab.grab()
im.show()

ผลลัพท์
testpic.png
testpic.png (110.38 KiB) เปิดดู 161 ครั้ง


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

โค้ด: เลือกทั้งหมด

import pyscreenshot as ImageGrab

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

# นำพิกัดที่เราต้องการให้แคปหน้าจอ ให้ทำงาน 
im = ImageGrab.grab(box)
im.show()

ผลลัพท์
testpic1.png
testpic1.png (71.96 KiB) เปิดดู 161 ครั้ง


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

โค้ด: เลือกทั้งหมด

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) เปิดดู 161 ครั้ง


4. ต้องการเก็บภาพตามเวลา (time interval คือ ระยะห่างช่วงเวลาระหว่างการถ่ายภาพแต่ละเฟรมของการถ่ายทำ Time-lapse โดยนับเอาจากช่วงเริ่มต้นเปิดม่านชัตเตอร์เพื่อรับแสงในแต่ละเฟรม)

โค้ด: เลือกทั้งหมด

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


  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 8 และ บุคคลทั่วไป 0 ท่าน