【问题标题】:Pyautogui - Screenshot Doesn't Cover Entire ScreenPyautogui - 屏幕截图不覆盖整个屏幕
【发布时间】:2017-02-20 12:09:01
【问题描述】:

我一直在尝试使用 pyautogui 的屏幕截图功能,每当我截取屏幕截图时,它只会捕获屏幕的左上角。即使我手动输入更大的区域进行截图,它只会使其余部分变黑。

例子:

我能做些什么来解决这个问题?

制作此图片的代码:

import pyautogui
import time
import sys

im = pyautogui.screenshot('board.png',region=(0,0, 2000, 1000))

【问题讨论】:

  • 你的代码对我来说看起来不错。该区域的大小看起来很奇怪,因为这不是常见的屏幕大小,所以也许这就是问题所在。尝试完全不使用 region 参数(默认为全屏),看看会发生什么(或输入正确的显示器分辨率)。
  • @martineau 如果我省略了 region 参数,屏幕截图只会显示没有黑色区域的屏幕。我怀疑这与我的屏幕高 dpi 有关,但我不知道如何解决这个问题。如果它有帮助的话,pyautogui 使用的大多数 x,y 像素坐标似乎比我的实际屏幕坐标少 2.5 倍,但我只是想获取整个屏幕的屏幕截图。如果我给它屏幕的正确尺寸,它只会使我的大部分屏幕变黑。
  • 可能是 PyAutoGUI(或它内部使用的 Pillow)的限制或错误。从前者的当前版本号(0.9.33)看来,它仍在开发中。您的显卡驱动程序也可能存在问题 - 请确保您安装了最新版本。如果一切都是最新的,我会提交一个错误报告(使用 PyAutoGUI)。
  • @martineau 这似乎是 Pillow 的问题。我会向他们提交一个问题,看看这是否可以解决。
  • 我有同样的问题,在 windows 10 上使用 pyautogui 1.0

标签: python python-2.7 screenshot pyautogui


【解决方案1】:

我从 python-imaging-library-fails-to-grab-whole-screen 和 Github pyautogui 问题 #116:Scaling issue on Windows affecting screenshots #116 找到了解决方法。 您仍然需要手动设置区域,因为默认不会捕获整个屏幕。

import pyautogui
from ctypes import windll
user32 = windll.user32
user32.SetProcessDPIAware()
pyautogui.screenshot('my_screenshot.png', region=(0,0,1920,1080))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多