Python編寫屏幕截圖程序方法
正在編寫的程序用的很多Windows下的操作,查了很多資料??吹郊羟邪宓牟僮鲿r(shí),想起以前想要做的一個(gè)小程序,當(dāng)時(shí)也沒做,現(xiàn)在正好順手寫完。
功能:按printscreen鍵進(jìn)行截圖的時(shí)候,數(shù)據(jù)保存在剪切板里面,很不方便。比如游戲的時(shí)候截一個(gè)瞬間的圖片,但你不能退出游戲保存圖片,不方便多次截圖。而我也不喜歡安裝各種軟件,所以準(zhǔn)備寫這個(gè)工具。
思路:一個(gè)是自定義快捷鍵,截圖,保存??紤]到很可能各種沖突,取消。然后還是用按printscreen來(lái)截圖,然后從剪切板讀取圖片數(shù)據(jù),保存。想法是,先監(jiān)聽鍵盤按鍵,當(dāng)printscreen按鍵時(shí),讀取剪切板內(nèi)容,最后保存圖片到指定位置。
1 監(jiān)聽鍵盤按鍵:從網(wǎng)上找到資料,安裝pywin32,pyhook。鏈接:http://sourceforge.net/projects/pyhook/,http://sourceforge.net/projects/pywin32/。教程:http://sourceforge.net/apps/mediawiki/pyhook/index.php?title=PyHook_Tutorial。
2 讀取剪切板內(nèi)容,也是需要pywin32.文檔在:[Pythonpath]\Lib\site-packages\PyWin32.chm,在線的:http://timgolden.me.uk/pywin32-docs/index.html
文檔中給出的幾種格式都不是圖片保存的數(shù)據(jù),Google搜索“Standard Clipboard Formats”,鏈接:http://msdn.microsoft.com/en-us/library/windows/desktop/ff729168%28v=vs.85%29.aspx,所有的格式,主要就是1-17.
好在文檔中有一個(gè)函數(shù):GetPriorityClipboardFormat,可以返回剪切板中的格式,從一個(gè)迭代器中。于是手動(dòng)輸入找到了,y有時(shí)為6,win32con.CF_TIFF,還會(huì)為2。當(dāng)然這里直接用返回?cái)?shù)據(jù)就行了,不需要知道是什么。
主要用到:
OpenClipboard,CloseClipboard,GetPriorityClipboardFormat,GetClipboardData,這幾個(gè)函數(shù)文檔都有介紹,主要說(shuō)說(shuō)CloseClipboard,官方文檔上講,不要在剪切板里放置對(duì)象后調(diào)用CloseClipboard。
3 保存圖片:
到這里發(fā)現(xiàn)可以直接用PIL模塊,直接解決問(wèn)題,上面太曲折T_T。
可以直接使用ImageGrab.grab() 進(jìn)行抓屏,或者使用ImageGrab.grabclipboard()從剪切板獲取圖像。
最后變成,監(jiān)聽按鍵,按下printscreen后,用pil截圖保存。T_T 感覺還不如設(shè)置快捷鍵,這樣應(yīng)該少占用內(nèi)存。
相關(guān)文章
Python循環(huán)實(shí)現(xiàn)n的全排列功能
這篇文章主要介紹了Python循環(huán)實(shí)現(xiàn)n的全排列功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
Python進(jìn)階之列表推導(dǎo)與生成器表達(dá)式詳解
這篇文章主要為大家詳細(xì)介紹了Python中列表推導(dǎo)與生成器表達(dá)式的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以參考一下2023-04-04
python+numpy+matplotalib實(shí)現(xiàn)梯度下降法
這篇文章主要為大家詳細(xì)介紹了python+numpy+matplotalib實(shí)現(xiàn)梯度下降法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
基于Opencv圖像識(shí)別實(shí)現(xiàn)答題卡識(shí)別示例詳解
這篇文章主要為大家詳細(xì)介紹了基于OpenCV如何實(shí)現(xiàn)答題卡識(shí)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Python bsddb模塊操作Berkeley DB數(shù)據(jù)庫(kù)介紹
這篇文章主要介紹了Python bsddb模塊操作Berkeley DB數(shù)據(jù)庫(kù)介紹,這里簡(jiǎn)單介紹一些關(guān)于bsddb的使用方法,需要的朋友可以參考下2015-04-04

