Python獲取電腦截圖有多種方式,具體如下:

目前創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、古藺網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
PIL中的ImageGrab模塊
windows API
PyQt
pyautogui
使用Selenium截圖
使用PIL中的ImageGrab模塊簡單,但是效率有點低,截屏一次需0.5s。
調(diào)用windows API,速度快但是使用較復(fù)雜,這里就不做詳細介紹了,因為有更好用的PyQt。
PyQt比調(diào)用windows API簡單很多,而且有windows API的很多優(yōu)勢,比如速度快,可以指定獲取的窗口,即使窗口被遮擋。需注意的是,窗口最小化時無法獲取截圖。
首先需要獲取窗口的句柄。
程序會打印窗口的hwnd和title,有了title就可以進行截圖了。
pyautogui是比較簡單的,但是不能指定獲取程序的窗口,因此窗口也不能遮擋,不過可以指定截屏的位置,0.04s一張截圖,比PyQt稍慢一點,但也很快了。
使用Selenium只能進行WEB程序截圖
方法一、使用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"網(wǎng)頁加載失敗!"
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()
windows下?只截取一個點? 用PIL的ImageGrab:
import ImageGrab
bbox = (300, 300, 300+1, 300+1)
img = ImageGrab.grab(bbox)
img.save("pixel.png")
img.show()
由于在我的一個程序中想要添加一個截圖功能,今天看一下利用Python怎樣截圖,功能實現(xiàn)都挺簡單了,直接上代碼
from
PIL
import
ImageGrab
im
=
ImageGrab.grab()
im.save(addr,'jpeg')
很簡單的幾行代碼就實現(xiàn)了我要的功能,PIL(Python
Image
Library)是Python的一個圖形庫,需要自己下載安裝,im
=
ImageGrab.grab()這行代碼實現(xiàn)截圖功能,可以帶參數(shù),指定要截取圖片的坐標(biāo)位置,不帶參數(shù)默認全屏截圖,im.save(addr,'jpeg')是保存截取的圖片,第一個參數(shù)是保存路徑,第二個參數(shù)是圖片格式
新聞標(biāo)題:python截圖函數(shù),如何給python的運行程序截圖
轉(zhuǎn)載來于:http://chinadenli.net/article9/dsihioh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站營銷、網(wǎng)站維護、網(wǎng)站設(shè)計、關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)