我正在用python制作一个屏幕截图程序。我目前的问题是 PIL.ImageGrab.grab() 给了我与 2 秒后相同的输出。例如,因为我想我不清楚,在下面的程序中,几乎所有的图像都是相同的,具有相同的 Image.tostring() 值,即使我在 PIL.ImageGrab 期间移动了我的屏幕。抓取循环正在执行。
>>> from PIL.ImageGrab import grab
>>> l = []
>>> import time
>>> for a in l:
l.append(grab())
time.sleep(0.01)
>>> for a in range(0, 30):
l.append(grab())
time.sleep(0.01)
>>> b = []
>>> for a in l:
b.append(a.tostring())
>>> len(b)
30
>>> del l
>>> last = []
>>> a = 0
>>> a = -1
>>> last = ""
>>> same = -1
>>> for pic in b:
if b == last:
same = same + 1
last = b
>>> same
28
>>>
这是一个问题,因为所有图像都相同,但 1. 30 中的 1 是不同的。这将制作一个绝对可怕的质量视频。请告诉我是否有比 PIL.ImageGrab.grab() 更好的替代品。我需要捕获整个屏幕。谢谢!
编辑:
到目前为止,看起来最好的选择是使用 pywin32。我现在正在使用它,但它非常慢。我并不真正关心兼容性,因为现在这个项目是个人的。每次算出程序的帧率,pywin32都这么慢,处于负数。请告诉我是否有更快的替代方案。谢谢!