クリップボードから画像生成してデスクトップに保存するpythonプログラムです。
便利ですのでよかったらどうぞ。
import os
import subprocess
from PIL import ImageGrab
from io import BytesIO
import win32clipboard
# クリップボードから画像を取得します。
def get_clipboard_image():
win32clipboard.OpenClipboard()
data = None
if win32clipboard.IsClipboardFormatAvailable(win32clipboard.CF_DIB):
data = win32clipboard.GetClipboardData(win32clipboard.CF_DIB)
win32clipboard.CloseClipboard()
if data is not None:
image = ImageGrab.Image.open(BytesIO(data))
return image
else:
print("クリップボードに画像データがありません。")
return None
# デスクトップのパスを取得します。
desktop_path = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop')
# PNGファイルとして保存します。
def save_as_png(image, filename):
file_path = os.path.join(desktop_path, filename)
# ファイル名が衝突しないようにします。
counter = 1
while os.path.isfile(file_path):
counter += 1
file_path = os.path.join(desktop_path, f"{filename.split('.')[0]}_{counter}.png")
image.save(file_path, 'PNG')
return file_path
# エクスプローラーでファイルを選択します。
def select_file_in_explorer(file_path):
# 正規化された絶対パスを取得します。
normalized_path = os.path.normpath(file_path)
subprocess.run(['explorer', '/select,', normalized_path])
# メイン関数
if __name__ == "__main__":
image = get_clipboard_image()
if image:
# 保存したいファイル名を決定します。
file_name = 'clipboard_image.png'
saved_path = save_as_png(image, file_name)
if saved_path:
print(f"画像ファイルを保存しました: {saved_path}")
select_file_in_explorer(saved_path)
コメント