MENU

MSペイントを開いて空のjpgファイルをデスクトップに保存するpythonスクリプト

先日こちらの記事を作成しました。
(「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で保存することができます。

本記事が少しでも参考になれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次