首页 > 解决方案 > 如果 OS 应用缩放因子,ImageGrab/pyscreenshot 不会捕获全屏

问题描述

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

例如,在我的笔记本电脑中,我的分辨率为 1920x1080,我在 Win10 中设置了 140% 的缩放。如果我抓取全屏,结果如下:
在此处输入图像描述

另一方面,当 OS 缩放默认为 t0 100% 时,这是正确的全屏: 在此处输入图像描述

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

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,0 - 1374,738。

标签: python

解决方案


在Github 线程上找到了解决方案。这与我的笔记本电脑屏幕的 DPI 有关。


推荐阅读