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

时间:2016-12-25 00:58:38

标签: python-2.7 screenshot pillow

我目前能够使用此代码拍摄桌面的屏幕截图

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

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

其中一个解决方案是使用Python Web服务器(龙卷风或其他)。

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

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

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

从手机或其他计算机打开浏览器,然后导航至:

ImageGrab.grab()

我无法测试此脚本,因为OutputStreamWriter oos = new OutputStreamWriter(context.openFileOutput(ARRANGED_TXT, Context.MODE_PRIVATE),"UTF-8"); 仅适用于Mac和Windows,但遗憾的是不适用于Linux。

答案 1 :(得分:0)

我尝试了这段代码:

from PIL import ImageGrab
import time
import cv2

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

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

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