2016-12-25 88 views
1

我目前能够使用这个代码以使用Python的只有我的桌面图标的全屏截图/ PIL

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

把我桌面的截图,但问题是,这抓住了python脚本/空闲对话框(框)也运行该脚本。 我想采取我的桌面屏幕干净的屏幕截图,通过脚本caputuring所有的桌面图标,背景屏幕和任务栏等。

有没有办法让它自动执行,这样脚本就可以自动执行它了?

谢谢。

+0

您是否设法让它工作? – Eddie

+0

嗨Eddie,我还没有机会测试它。首先,我正在完成其他几个脚本。我没有太多使用网络服务器的经验,所以我想对这个主题进行一些阅读,并阅读一些教程,以获得基本的理解。一旦我玩了它,我会让你知道它是如何发生的。真正感谢提示和见解。 – Moondra

回答

0

我尝试了这样的代码:

from PIL import ImageGrab 
import time 
import cv2 

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

我通过5秒延迟的ImageGrab.grab()执行,在此期间,我最小化我的工作区,并切换到我的台式机。 5秒后它捕获了我的桌面屏幕截图并保存。

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

+0

你也可以检查[THIS POST](http://stackoverflow.com/questions/24129253/screen-capture-with-opencv-and-python-2-7/24213099#24213099)。 –

1

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

看看下面的代码(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上。

+0

谢谢。我会在python服务器上多读一点,因为我对它们不太熟悉。 – Moondra

+0

它应该很容易。一旦你从终端窗口中安装了“龙卷风”,你可以从字面上复制,粘贴并运行上面的代码。当您导航到上面的链接时,get函数中的代码将执行。如果您想了解更多关于Tornado的信息,请点击这里(http://www.tornadoweb.org/en/stable/)。这是相当直接的。我强烈建议你使用像PyCharm这样的IDE(如果你还没有的话),并在调试模式下用一堆断点运行你的应用程序。它会让你的生活更轻松。 – Eddie