Запись экрана с Python в GIF - PullRequest
       15

Запись экрана с Python в GIF

2 голосов
/ 05 января 2020

Записывает 5-секундный скринкаст левого верхнего квадрата экрана размером 300x300 пикселей (10 кадров в секунду):

import time, numpy as np, pyautogui, imageio
t0 = time.time()
with imageio.get_writer('test.gif', mode='I', duration=0.1) as writer:
    while True:
        t1 = time.time()
        img = pyautogui.screenshot(region=(0,0,300,300))
        writer.append_data(np.array(img))
        t2 = time.time()
        time.sleep(0.1 - (t2 - t1))
        if t2 - t0 > 5:
            break

Работает, но выходной файл очень большой (1,5 МБ для 5 секунд и только 300x300px!). Некоторые программы (такие как бесплатное программное обеспечение ScreenToGif) могут генерировать оптимизированный GIF с помощью обнаружения неизмененных пикселей в последовательных кадрах , и тогда для одного и того же файла может потребоваться 50 КБ вместо 1,5 МБ.

Как сделать такой оптимизированный GIF с Python? Возможно ли это с imageio; если нет, есть ли способ сделать это вручную?

...