使用 python/ PIL 仅截取我的桌面图标的完整屏幕截图

Taking a full screenshot of only my desktop icons using python/ PIL

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

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

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

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

谢谢。

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

看看下面的代码(Python3版本):

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()

当脚本为 运行 时最小化 IDLE window。

从您的 phone 或另一台计算机打开浏览器并导航至:

http://[your IP address]:8888

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

我试过这段代码:

from PIL import ImageGrab
import time
import cv2

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

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

我仍在想办法自动捕获桌面。