先日こちらの記事を作成しました。
(「MSペイントの初期保存設定がpngになっているのをjpgで初期保存されるようにする」設定変更ができないことへの対応として考えた内容です)
あわせて読みたい


指定したjpgファイルをmsペイントで開くpythonスクリプト
備忘録として残しておきます。 【追伸:後日、このプログラムの強化版を作成しました(以下記事参照)】 https://bellblog.org/mspaint-jpg-desktop-hozon-python-scrip...
しかし、上記記事のスクリプトではまだ足りない点がありました。
【足りない点】
最初にjpgが開かれるようになったが、その後名前をつけて保存を押さなければならない(ctrl+sで保存することができない)
このため、不足点を補ったスクリプトを改めて作ることにしました。
目次
MSペイントを開いて空のjpgファイルをデスクトップに保存するpythonスクリプト【msペイントで初期設定をjpg保存にする方法の代案】
コード内容
コード内容は、以下の通りです。
import os
import subprocess
import pyautogui
import time
import winreg
def get_desktop_path():
"""Windowsのレジストリからデスクトップパスを取得"""
try:
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders") as key:
desktop_path = winreg.QueryValueEx(key, "Desktop")[0]
return desktop_path
except Exception as e:
print(f"エラー: デスクトップパスを取得できませんでした: {e}")
return None
def get_existing_jpg_files(desktop_path):
"""デスクトップ上の JPG ファイルを取得"""
return [
file for file in os.listdir(desktop_path)
if file.lower().endswith((".jpg", ".jpeg"))
]
def get_unique_filename(desktop_path, base_name, extension):
"""
重複しないファイル名を生成。
saved_image.jpg, saved_image2.jpg, saved_image3.jpg のような形式。
"""
existing_files = get_existing_jpg_files(desktop_path)
unique_name = f"{base_name}{extension}"
counter = 2
while unique_name in existing_files:
unique_name = f"{base_name}{counter}{extension}"
counter += 1
return unique_name
def open_paint_and_save_to_desktop():
"""ペイントを開き、重複しないファイル名で保存"""
desktop_path = get_desktop_path()
if not desktop_path:
print("デスクトップのパスを取得できません。プログラムを終了します。")
return
# ベースファイル名と拡張子
base_name = "saved_image"
extension = ".jpg"
# 重複しないファイル名を取得
save_file_name = get_unique_filename(desktop_path, base_name, extension)
try:
# ペイントを起動
subprocess.Popen(["mspaint"])
time.sleep(2) # ペイントが起動するまで待機
# Ctrl+S で保存ダイアログを開く
pyautogui.hotkey("ctrl", "s")
time.sleep(1) # 保存ダイアログが開くまで待機
# ファイル名をクリアして入力
pyautogui.hotkey("ctrl", "a")
pyautogui.press("backspace")
pyautogui.typewrite(save_file_name)
pyautogui.press("enter")
time.sleep(1) # 保存完了まで待機
print(f"画像をデスクトップに保存しました: {save_file_name}")
# ペイントを閉じない(terminateしない)
print("ペイントを開いたままにしています。")
except Exception as e:
print(f"エラーが発生しました: {e}")
if __name__ == "__main__":
open_paint_and_save_to_desktop()
機能
機能は以下の通りです。
①MSペイントを起動する
②デスクトップにjpgファイルを保存する
(ファイル名:saved_image.jpg)
③デスクトップに同名ファイルがあったら、ファイル名を変更する。(例:saved_image.jpgがデスクトップにある場合、saved_image2.jpgで保存)(以降も同様(3・4・5という感じで増えていく))
④MSペイントは開いたままにする
使い方
①このファイルを「pyw形式」で保存する(例:paint.pyw)
②作成したファイルのショートカットを作成する。
③ショートカットに名前をつける(例:ペイントを起動しデスクトップにjpgを保存)
④Win+Rを押してプログラムを指定して実行のダイアログを出す。
⑤「shell:programs」と入力する。
⑥フォルダが開かれるので、作成したショートカットを中に入れる。
⑦スタートメニューの一覧に、作成したショートカットが出るので、スタートにピン留めする。
(使用する時は、スタートにピン留めしたショートカットから起動する)
まとめ
これで、MSペイントで画像を保存する際に、初期からjpgで保存することができます。
本記事が少しでも参考になれば幸いです。

コメント