Last Updated on 2021-05-12 by Clay
今天在嘗試著開發自己有興趣的 Side Project 時,有『將截圖的圖片複製進剪貼簿』這樣的需求,於是開始進行學習。
事先聲明,這個辦法可能只有 Windows 的作業系統可以辦到,其他的作業系統可能得想想其他辦法。
遺憾的是,這個 Side Project 還沒完成,而我接下來還會因為一些外務而被 Interrupt,可能得過一個禮拜才能繼續回來完成這個 Side Project 了。
話題扯遠了。那麼以下,我便簡單紀錄一下我如何進行截圖、如何將截圖貼到 Windows 的剪貼簿當中吧。
使用 Pillow 截圖
使用 Pillow 截圖非常簡單,也許你可以參考我寫過的《使用 Python 進行螢幕錄影》。
如果是第一次使用 pywin32 ,需要以下指令安裝。
sudo pip3 install win32clipboard
# -*- coding: utf-8 -*- import win32clipboard as clip import win32con from io import BytesIO from PIL import ImageGrab
首先,匯入我們需要的模組。 Pillow 的 ImageGrab 是我們截圖的函式,另外, win32clipboard 是我們貼入剪貼簿所需要的函式。
image = ImageGrab.grab()
這樣我們就把截取的全螢幕圖放入 image 變數當中了。記得這是 RGB 形式儲存的,如果要使用 OpenCV 之類的模組顯示要記得轉成 BGR。
將擷取的圖放入剪貼簿
output = BytesIO() image.convert('RGB').save(output, 'BMP') data = output.getvalue()[14:] output.close() clip.OpenClipboard() clip.EmptyClipboard() clip.SetClipboardData(win32con.CF_DIB, data) clip.CloseClipboard()
這裡要注意的是 OpenClipboard() 之後要使用 EmptyClipboard() 清空剪貼簿,不然若是原先剪貼簿裡頭存放著東西,我們程式是會發生錯誤的。
執行完以上程式,這時候找個小畫家貼一下就好可以看到我們截的圖了。
例如:
例如這樣,這是我擷取的畫面——當然,因為我執行程式的時候人在 PyCharm 這個 IDE 當中嘛。