如果操作系统应用了缩放系数,则ImageGrab / pyscreenshot无法捕获全屏

时间:2019-04-25 21:25:13

标签: python

我正忙着玩ImageGrab,我注意到,如果您在操作系统中设置了自定义缩放比例,则如果您抓取全屏图像,则捕获的一部分将是黑色的。

例如,在我的笔记本电脑中,我的分辨率为1920x1080,并且在Win10中设置了140%的缩放比例。如果我全屏观看,结果如下:
enter image description here

另一方面,

,当OS缩放默认为t0 100%时,这是正确的全屏显示: enter image description here

我使用的代码是非常基本的,为了完整起见,我将展示它:

from PIL import ImageGrab as ig
from pynput.mouse import Button, Controller
from pynput.keyboard import Key
from pynput import keyboard

def onpress(k):
    if k == keyboard.Key.esc:
        # break if esc is pressed
        return False
    else:
        img= ig.grab()
        img.save('screenshot.png')

with keyboard.Listener( on_press= onpress) as listener:
    listener.join()

通过记录鼠标的位置,我注意到当屏幕设置为140%缩放时,边框大约在0-1374,738之间。

1 个答案:

答案 0 :(得分:0)

a Github thread上找到了解决方案。这与笔记本电脑屏幕的DPI有关。