[Python] クリップボードの画像をファイルに保存してみた

クリップボードの画像をファイルに保存してみた

自分はよく「Windowsキー + Shiftキー + Sキー」で領域選択してスクリーンショットを撮っている。
そこからペイントとかに貼り付けて画像ファイルとして保存というステップがめんどいと思ったのでPythonでできるようにしてみたメモ。

調べてみるとPIL(Pillow)という画像処理ライブラリでいい感じに出来るみたいなのでやってみる。

(スポンサーリンク)
目次

Pillowのインストール

pip install Pillow

サンプルコード

こんな感じにコードを書いた。

from datetime import datetime
from PIL import Image, ImageGrab

# クリップボードから画像データを取得
clip_img = ImageGrab.grabclipboard()

# 画像データじゃない場合は終了
if clip_img is None:
    print('no data')
    exit

# なんか他とかぶらない名前をつける
timestr = datetime.now().strftime('%Y%m%d%H%M%S')

# 画像データを保存
clip_img.convert('RGB').save(f'{timestr}.jpg')

ImageGrab.grabclipboard()でクリップボードから画像データを取り出せる。
クリップボードにあるデータが画像データではない場合、Noneが返ってくるみたいなのでその時は処理終了。

領域選択したときの画像のモードはRGBAになるらしくjpegで保存できなかったので間にconvertメソッドを使ってRGBに変更している。これでjpegで保存できるようになる。
png形式でいい場合はconvertはいらない。

↓convertがないとこんなエラーがでて保存できない

例外が発生しました: OSError
cannot write mode RGBA as JPEG
KeyError: ‘RGBA’

そのあとにsaveメソッドを実行すればOK(パラメータは保存するファイル名)。
何枚も保存することを想定して現在時刻をファイル名にしている。

あとはこれを呼びだすバッチファイルを作ってそのファイルを実行するだけで画像が保存できるようにした。

python clipboard-img-save.py
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次