Python編寫螢幕截圖程式方法

來源:互聯網
上載者:User
正在編寫的程式用的很多Windows下的操作,查了很多資料。看到剪下板的操作時,想起以前想要做的一個小程式,當時也沒做,現在正好順手寫完。

功能:按printscreen鍵進行的時候,資料儲存在剪下板裡面,很不方便。比如遊戲的時候截一個瞬間的圖片,但你不能離開遊戲儲存圖片,不方便多次。而我也不喜歡安裝各種軟體,所以準備寫這個工具。

思路:一個是自訂快速鍵,,儲存。考慮到很可能各種衝突,取消。然後還是用按printscreen來,然後從剪下板讀取圖片資料,儲存。想法是,先監聽鍵盤按鍵,當printscreen按鍵時,讀取剪下板內容,最後儲存圖片到指定位置。

1 監聽鍵盤按鍵:從網上找到資料,安裝pywin32,pyhook。連結:http://sourceforge.net/projects/pyhook/,http://sourceforge.net/projects/pywin32/。教程:http://sourceforge.net/apps/mediawiki/pyhook/index.php?title=PyHook_Tutorial。

2 讀取剪下板內容,也是需要pywin32.文檔在:[Pythonpath]\Lib\site-packages\PyWin32.chm,線上的:http://timgolden.me.uk/pywin32-docs/index.html

文檔中給出的幾種格式都不是圖片儲存的資料,Google搜尋“Standard Clipboard Formats”,連結:http://msdn.microsoft.com/en-us/library/windows/desktop/ff729168%28v=vs.85%29.aspx,所有的格式,主要就是1-17.

好在文檔中有一個函數:GetPriorityClipboardFormat,可以返回剪下板中的格式,從一個迭代器中。於是手動輸入找到了,y有時為6,win32con.CF_TIFF,還會為2。當然這裡直接用返回資料就行了,不需要知道是什麼。

主要用到:

OpenClipboard,CloseClipboard,GetPriorityClipboardFormat,GetClipboardData,這幾個函數文檔都有介紹,主要說說CloseClipboard,官方文檔上講,不要在剪下板裡放置對象後調用CloseClipboard。

3 儲存圖片:

到這裡發現可以直接用PIL模組,直接解決問題,上面太曲折T_T。

可以直接使用ImageGrab.grab() 進行抓屏,或者使用ImageGrab.grabclipboard()從剪下板擷取映像。

最後變成,監聽按鍵,按下printscreen後,用pil儲存。T_T 感覺還不如設定快速鍵,這樣應該少佔用記憶體。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.