这记录了屏幕左上角 300x300 像素正方形的 5 秒截屏视频(每秒 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 MB 5 秒,只有 300x300 像素!)。一些程序(例如 ScreenToGif 免费软件)能够通过检测连续帧中未修改的像素来生成优化的 GIF ,然后对于同一文件可能需要 50 KB 而不是 1.5 MB。
如何用 Python 制作出如此优化的 GIF?有可能吗imageio
?如果没有,有没有办法手动完成?