วิธีการจับภาพหน้าจอทุก ๆ n วินาที?


16

ฉันสามารถใช้ซอฟต์แวร์ใดในการจับภาพหน้าจอในช่วงเวลาที่กำหนด ฉันต้องการถ่ายภาพหน้าจอทุก 2 วินาทีหรือมากกว่านั้น Command-line และ GUI นั้นใช้ได้

ฉันต้องการซอฟต์แวร์ที่สามารถปรับขนาดและบีบอัดภาพหน้าจอแต่ละภาพได้


2
ขอให้โชคดีการสอดแนม
Oleh Prypin

คำตอบ:


19

ติดตั้งscrotและเรียกใช้สิ่งนี้:

while true; do scrot & sleep 2; done

จะไม่ใช้เวลา 2 วินาที + เวลาในการไต่สวน
Seppo Erviälä

1
ดูเหมือนว่าจะจับภาพหน้าจอทุก ๆ 2 วินาทีในระบบของฉัน ฉันต้องการบางสิ่งที่แม่นยำยิ่งขึ้น
Seppo Erviälä

7
@Seppo: while true; do scrot & sleep 2; doneการใช้งาน มันจะพื้นหลังscrot(มันวิ่ง scrot แต่ไม่ได้ปิดกั้นจน scrot จะทำ)
Lekensteyn

2
ขอบคุณ Lekensteyn ฉันแก้ไขคำตอบของฉันตามนั้น ฉันไม่คิดว่าสองสามมิลลิวินาทีจะสร้างความแตกต่าง แต่ใช้เวลา 1/2 และอาจใช้เวลานานกว่าบนดิสก์ที่ช้ากว่า มีความเสี่ยงที่นี่ที่บนดิสก์ที่ช้ามากซึ่งมีช่องว่าง 2 วินาทีที่เหมาะสมมันจะถูกเขียนลงดิสก์อย่างต่อเนื่องหรือแย่กว่านั้นมันจะเติมบัฟเฟอร์ทั้งหมดจนกว่าระบบจะหยุดชะงัก @Seppo ให้แน่ใจว่าสิ่งที่คุณกำลังทำมีเวลาพอที่จะเขียนลงดิสก์
Oli


2
while true; do import -window root /path/to/where/you/want/to/save/`date`.png; done

1
คุณจะต้องติดตั้ง imagemagick เพื่อให้สิ่งนี้ใช้งานได้ คุณสามารถเพิ่มคำสั่ง sleep ให้กับสคริปต์เพื่อให้ถ่ายภาพหน้าจอทุก 2 วินาทีตามที่คำถามถาม
Javier Rivera

1

ตามการแก้ไขคำถามของคุณ:

import threading
    import os

    def capture(i):
        i += 1
        threading.Timer(2.0, capture, [i]).start()
        fill = str(i).zfill(5)
        os.system("scrot scrot-%s.jpg" % fill)
        os.system("streamer -o streamer-%s.jpeg -s 320x240 -j 100" % fill)

    capture(0)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.