【Python】クリップボードの画像を取得して保存する方法
クリップボードにコピーした画像をPythonで取得し、ファイルとして保存する方法を紹介します。Windowsでは Pillow の ImageGrab を使う方法がある一方でLinuxでは ImageGrab が動作しません。その代わりにLinuxでは xclip や xsel を利用することでクリップボードから画像を取得できます。
この記事では、Windows版とLinux版(Macでも可)の2パターンでクリップボードから画像を取得しファイルに保存する方法について解説します。
Windows限定
Pillow の ImageGrab モジュールを利用すると、クリップボード内の画像を取得できます。
from PIL import ImageGrab
# クリップボードから画像を取得
image = ImageGrab.grabclipboard()
if image:
image.show() # 画像を表示
image.save("clipboard_image2.png") # 保存
else:
print("クリップボードに画像がありません")
Linux(Mac)限定
LinuxやmacOSでは、xclipを使ってクリップボードから画像を取得する方法があります。
xclip コマンドがインストールされていない場合は以下のコマンドでインストールします。
sudo apt update sudo apt install xclip
ソースコードはこちら。
import subprocess
# from PIL import Image
# クリップボードの画像を clipboard_image.png に保存
with open("clipboard_image.png", "wb") as f:
subprocess.run(["xclip", "-selection", "clipboard", "-t", "image/png", "-o"], stdout=f)
まとめ
Windows環境でクリップボードの画像を取得する方法としてImageGrab、Linux環境ではxclipを利用する方法を紹介しました。xclip を使う場合は -selection clipboard -t image/png -o オプションを指定することで画像データを取得できます。どちらもクリップボードの画像を直接 clipboard_image.png に保存し、Pillow で開くことが可能です。
スポンサーリンク