Python, Pillowでクリップボードの画像を取得するImageGrab.grabclipboard()
Python, Pillow(PIL)のImageGrab.grabclipboard()でクリップボードの画像を取得できる。バージョン9.1.0(2022年4月)時点ではWindowsおよびmacOSのみで利用できる。
ここでは取り上げないが、ImageGrabにはスクリーンショットを撮るImageGrab.grab()もある。
なお、pyperclipを使うと、クリップボードの文字列(テキスト)をコピー&ペーストできる。
ImageGrab.grabclipboard()の使い方
ImageGrab.grabclipboard()を実行すると、その時点でクリップボードにコピーされている画像が返される。Imageオブジェクトとして扱えるので、Pillowの様々な処理が可能。ここではsave()で画像を保存している。
from PIL import ImageGrab, Image
img = ImageGrab.grabclipboard()
print(img)
# <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=200x71 at 0x105E68700>
print(isinstance(img, Image.Image))
# True
print(img.size)
# (200, 71)
print(img.mode)
# RGB
img.save('data/temp/clipboard_image.jpg')
クリップボードにコピーされているのが画像ではなくテキストなどの場合はNoneが返される。
img = ImageGrab.grabclipboard()
print(img)
# None