我正在用python製作截屏程序。我當前的問題是PIL.ImageGrab.grab()給了我2秒後的相同輸出。例如,我認爲我不清楚,在下面的程序中,幾乎所有的圖像都是相同的,即使在PIL.ImageGrab期間我正在移動屏幕,也具有相同的Image.tostring()值。搶奪循環正在執行。有沒有比PIL.ImageGrab.grab()更好的捕捉屏幕的方法?
>>> 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
>>>
這是一個問題,因爲所有的圖像都是相同的,但是30箇中有1個是不同的。這將會產生絕對可觀的高質量視頻。請告訴我是否有更好的質量替代PIL.ImageGrab.grab()。我需要捕捉整個屏幕。謝謝!
編輯:
到目前爲止,它看起來像最好的選擇是使用pywin32。我現在正在使用它,但速度很慢。我並不關心兼容性,因爲現在這個項目是個人的。每次我計算出程序的幀速率時,pywin32都非常慢,它是負面的。請告訴我,如果有更快的選擇。謝謝!
如果你在X窗口,然後按[GStreamer的(http://gstreamer.freedesktop.org/ )及其[ximagesrc](http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-ximagesrc.html)插件可以是一個好的解決方案。 –
30 * 0.01 = 0.3秒。你確定在這段時間移動了窗戶嗎? – swang
你想跨平臺的東西,還是特定於Windows的行嗎?你可以使用重型框架(如Qt或wx)嗎? – abarnert