当前位置: 首页 > 面试题库 >

Python Imaging Library无法捕获整个屏幕

郑胡媚
2023-03-14
问题内容

如您所见,屏幕的侧面和底部都有足够的空间。我试图通过调整捕获区域的大小来纠正此问题,但这只会导致多余的区域被黑色填充

我在考虑该库可以捕获的最大分辨率有一个限制,但是我真的找不到任何这样说的文档。

下面是我的代码

import ImageGrab
import os
import time


def screenGrab():
    box = (0, 0, 1920, 1080)
    im = ImageGrab.grab(box)
    im.save(os.getcwd() + '\\screenshot_' + str(int(time.time())) + '.png', 'PNG')


def main():
    screenGrab()

if __name__ == '__main__':
    main()

有人知道如何解决此问题或知道为什么会发生吗?


问题答案:

我今天来得太早了。该脚本仅捕获像素0,0-1536,864。我最近切换到Windows
8,发现某些程序似乎以错误的分辨率显示。经过一番搜索,我找到了解决方法。

  • 转到您的python目录(对我来说c:/ python27 /)
  • 右键单击python.exe并选择属性
  • 选择兼容性选项卡
  • 按下“更改所有用户的设置”按钮
  • 选中“在高DPI设置时禁用显示比例缩放”框
  • ImageGrab现在将捕获整个分辨率

如果找到通用修复程序,我会进行更新,但是我想我会在这里发布,因为我搜索了一个小时左右,却找不到解决方案。

编辑:

通用修复

  • 右键点击桌面
  • 选择“屏幕分辨率”
  • 点击“使文本和其他项目变大或变小”
  • 选中“让我为所有显示选择一个缩放级别”
  • 选择“较小-100%”

这将导致较小但更清晰的文本和图标。



 类似资料:
  • 我试图创建一个通用的网络爬虫,将去一个网站和截图。我使用的是Python、Selnium和PhantomJS。问题是截图并没有捕获页面上的所有图像。例如,如果我去you tube,它不会捕捉主页图像下面的图像。(我没有足够高的rep来发布屏幕截图)我认为这可能与动态内容有关,但我已经尝试了等待函数,如隐式等待和on set_page_load_timeout方法。因为这是一个通用的爬虫,我不能等待

  • 问题内容: 我正在尝试捕获“ android.database.sqlite.SQLiteException:错误代码5:数据库已锁定”异常,并带有: 由于某些原因,我仍然会收到错误消息,并且LogCat中没有显示“ caught”。我尝试捕获一般的“异常”,但这仍然行不通。怎么了? 更新, 我发现了这个问题,这确实很奇怪:由于某种原因,将goto10声明的db.insert()更改为db.ins

  • 问题内容: 尽管我在日志中看到了异常,但似乎无法捕获到约束违例异常。 实体 我正试图抓住它 -它永远不会到达捕获块。 当我使用 捕获(异常e) 我捕获到“ javax.transaction.RollbackException:ARJUNA016053:无法提交事务。” 这是错误日志: 我究竟做错了什么 ? 更新>> 我当前的代码是: 日志是 环境:PostgreSQL 9.2 JBoss AS

  • 我使用的是Spring Boot 2和Spring Boot starter数据jpa以及底层的MariaDB。 我有一个带有唯一键“用户名”的表。如果违反了此约束,我想捕获,但似乎Spring正在记录并且不会在记录后重新抛出(我最好的猜测)。被抛出。 我想在中捕获。 以下是几段代码片段: 堆栈跟踪:

  • 问题内容: 我的IDE给我该行的错误 我试着抓住,但是并没有使错误消失。有什么想法吗? 问题答案: 扩展了,所以您的IDE本身就有了更深的麻烦-也许库导入被搞砸了?

  • 我正在尝试捕获SocketTimeoutException,以便我的套接字保持活动状态,并且可以继续读取程序。不幸的是,无论我如何尝试捕获读取超时,我都无法捕获,因此应用程序关闭。