重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

python截图函数,如何给python的运行程序截图

Python获取屏幕截图的几种方法

Python获取电脑截图有多种方式,具体如下:

目前创新互联已为上1000家的企业提供了网站建设、域名、雅安服务器托管绵阳服务器托管、企业网站设计、古蔺网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

PIL中的ImageGrab模块

windows API

PyQt

pyautogui

使用Selenium截图

使用PIL中的ImageGrab模块简单,但是效率有点低,截屏一次需0.5s。

调用windows API,速度快但是使用较复杂,这里就不做详细介绍了,因为有更好用的PyQt。

PyQt比调用windows API简单很多,而且有windows API的很多优势,比如速度快,可以指定获取的窗口,即使窗口被遮挡。需注意的是,窗口最小化时无法获取截图。

首先需要获取窗口的句柄。

程序会打印窗口的hwnd和title,有了title就可以进行截图了。

pyautogui是比较简单的,但是不能指定获取程序的窗口,因此窗口也不能遮挡,不过可以指定截屏的位置,0.04s一张截图,比PyQt稍慢一点,但也很快了。

使用Selenium只能进行WEB程序截图

如何用python对整个文章截图

方法一、使用PyQt4的QtWebKit组件

#!/usr/bin/env python

# -*- coding: UTF-8 -*-

# 来源 

import sys

import os.path

from PyQt4 import QtGui,QtCore,QtWebKit

class PageShotter(QtGui.QWidget):

def __init__(self,url,filename,parent=None):

QtGui.QWidget.__init__(self,parent)

self.url = url

self.filename = filename

self.webpage = None

def shot(self):

webview = QtWebKit.QWebView(self)

webview.load(QtCore.QUrl(self.url))

self.webpage = webview.page()

self.connect(webview,QtCore.SIGNAL("loadFinished(bool)"),self.save_page)

def save_page(self,finished):

#print finished

if finished:

print u"开始截图!"

size = self.webpage.mainFrame().contentsSize()

print u"页面宽:%d,页面高:%d" % (size.width(),size.height())

self.webpage.setViewportSize(QtCore.QSize(size.width()+16,size.height()))

img = QtGui.QImage(size, QtGui.QImage.Format_ARGB32)

painter = QtGui.QPainter(img)

self.webpage.mainFrame().render(painter)

painter.end()

filename= self.filename;

if img.save(filename):

filepath = os.path.join(os.path.dirname(__file__), filename)

print u"截图完毕:%s" % filepath

else:

print u"截图失败";

else:

print u"网页加载失败!"

self.close()

if __name__=="__main__":

app = QtGui.QApplication(sys.argv)

#shotter = PageShotter("")

shotter = PageShotter("", 'shot.png')

shotter.shot()

sys.exit(app.exec_())

方法二、使用selenium

#!/usr/bin/env python

# -*- coding: UTF-8 -*-

import time

from selenium import webdriver

browser = webdriver.Firefox()

browser.set_window_size(1055, 800)

browser.get("")

browser.find_element_by_id("idClose").click()

time.sleep(5)

browser.save_screenshot("shot.png")

browser.quit()

python如何截图?(指定坐标范围,非全屏)

windows下?只截取一个点? 用PIL的ImageGrab:

import ImageGrab

bbox = (300, 300, 300+1, 300+1)

img = ImageGrab.grab(bbox)

img.save("pixel.png")

img.show()

Python程序抓图 怎么用程序实现截图

由于在我的一个程序中想要添加一个截图功能,今天看一下利用Python怎样截图,功能实现都挺简单了,直接上代码

from

PIL

import

ImageGrab

im

=

ImageGrab.grab()

im.save(addr,'jpeg')

很简单的几行代码就实现了我要的功能,PIL(Python

Image

Library)是Python的一个图形库,需要自己下载安装,im

=

ImageGrab.grab()这行代码实现截图功能,可以带参数,指定要截取图片的坐标位置,不带参数默认全屏截图,im.save(addr,'jpeg')是保存截取的图片,第一个参数是保存路径,第二个参数是图片格式


文章标题:python截图函数,如何给python的运行程序截图
分享地址:http://cqcxhl.com/article/dsihioh.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP