非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【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 で開くことが可能です。

 

スポンサーリンク

 - Python