【问题标题】:Taking a full screenshot of only my desktop icons using python/ PIL使用 python/PIL 仅截取我的桌面图标的完整屏幕截图
【发布时间】:2017-05-10 03:15:47
【问题描述】:

我目前可以使用此代码截取我的桌面截图

from PIL import Image, ImageGrab
x =ImageGrab.grab()
x.show()

但问题是,这会捕获运行脚本的 python 脚本/空闲对话框(框)。 我想对我的桌面屏幕进行干净的截图,通过脚本捕获所有桌面图标、背景屏幕和任务栏等。

有没有办法自动化它,以便脚本可以自动执行此操作?

谢谢。

【问题讨论】:

  • 你设法让它工作了吗?
  • 嗨,Eddie,我还没有机会测试它。首先,我正在完成其他几个脚本。我没有太多使用 Web 服务器的经验,所以我想阅读一些有关该主题的内容并阅读一些教程,只是为了获得基本的了解。一旦我玩它,我会告诉你它是怎么回事。非常感谢这些提示和见解。

标签: python-2.7 screenshot pillow


【解决方案1】:

其中一种解决方案是使用 Python Web 服务器(tornado 或其他)。

看看下面的代码(Python 3 版本):

pip install tornado

from PIL import ImageGrab
import tornado.ioloop
import tornado.web


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        x = ImageGrab.grab()
        x.show()
        self.write("Hello, world")


def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

在脚本运行时最小化空闲窗口。

从您的手机或另一台计算机上打开浏览器并导航到:

http://[your IP address]:8888

我无法测试此脚本,因为 ImageGrab.grab() 仅适用于 Mac 和 Windows,但不幸的是不适用于 Linux。

【讨论】:

  • 谢谢。由于我对 python 服务器不太熟悉,所以我将阅读更多关于 python 服务器的内容。
  • 应该很容易。一旦你从终端窗口pip install tornado,你就可以复制、粘贴和运行上面的代码。当您导航到上面的链接时,get 函数中的代码就会执行。如果您想了解有关 Tornado 的更多信息,请参阅文档 (tornadoweb.org/en/stable)。这是相对简单的。我强烈建议您使用像 PyCharm 这样的适当 IDE(如果您还没有的话)并在带有一堆断点的调试模式下运行您的应用程序。它会让您的生活更轻松。
【解决方案2】:

我试过这段代码:

from PIL import ImageGrab
import time
import cv2

time.sleep(5)
x = ImageGrab.grab() 
x.save('Screenshot.jpg')
x.show()

我将ImageGrab.grab() 的执行延迟了 5 秒,同时我最小化了我的工作区并切换到了我的桌面。 5 秒后,它截取了我的桌面截图并保存。

我仍在寻找一种自动捕获桌面的方法。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
相关资源
最近更新 更多