Sahara3のAI副業

AI副業でどこまでいけるのか?

AI副業:jpgファイルを一括でpngへ変換したい

「さはら3」です。

AI副業でどこまでいけるのか?をテーマに頑張っていきたいと思います。



頭の体操

  • 1か所だけ異なる漢字が入っています。(解答は一番最後に掲載)

問題


本編

jpgよりpngが好きです。

以前作成した、watermarkを付与するスクリプトを実行したら、jpgのエラーが発生。

そもそも、pngしか対象にしていなかったのでエリア発生はもちろん想定内。

エラー解消するのも手間だったので、フォルダー内のjpgファイルを一括でpngに変換するスクリプトを確認したいと思います。


スクリプト

というわけで出来上がったのがこちら

# OSモジュールをインポート
import os 
# tkinterから必要なクラスをインポート
from tkinter import Tk, filedialog, Button, Label  
# PILライブラリからImageクラスをインポート
from PIL import Image  

# 設定ファイルの名前を定義
CONFIG_FILE = "Config.txt"  

# 最後に使用したフォルダのパスを保存する関数
def save_last_folder(folder_path):
    with open(CONFIG_FILE, 'w') as file:
        file.write(folder_path)

# 最後に使用したフォルダのパスを読み込む関数
def load_last_folder():
    if os.path.exists(CONFIG_FILE):
        with open(CONFIG_FILE, 'r') as file:
            return file.read().strip()
    return ""

# jpg/jpegファイルをpngに変換する関数
def convert_jpg_to_png(folder_path):
    jpg_files = [f for f in os.listdir(folder_path) if f.lower().endswith(('.jpg', '.jpeg'))]

    for jpg_file in jpg_files:
        img = Image.open(os.path.join(folder_path, jpg_file))
        base_name = os.path.splitext(jpg_file)[0]
        output_path = os.path.join(folder_path, f"{base_name}.png")
        img.save(output_path, "PNG")
        print(f"Converted {jpg_file} to {base_name}.png")

    lbl_result.config(text=f"Converted {len(jpg_files)} images to PNG!")
    save_last_folder(folder_path)

# フォルダを選択するための関数
def select_folder():
    last_folder = load_last_folder()
    folder_path = filedialog.askdirectory(initialdir=last_folder)
    if folder_path:
        convert_jpg_to_png(folder_path)

# メインウィンドウを作成
root = Tk()  
# ウィンドウのタイトルを設定
root.title("JPG to PNG Converter")  

# メインウィンドウのサイズを変更
# ウィンドウのサイズを400x200ピクセルに設定
root.geometry("400x200")  

# "Select Folder"ボタンを作成
btn_select = Button(root, text="Select Folder", command=select_folder)
# ボタンをウィンドウに追加
btn_select.pack(pady=20)  

# 結果を表示するためのラベルを作成
lbl_result = Label(root, text="")
# ラベルをウィンドウに追加
lbl_result.pack(pady=20)  

# GUIのメインループを開始
root.mainloop()  

Amazon アソシエイト


実行画像

開始

フォルダー選択

処理終了

解説

モジュール、ライブラリ、クラスのインポート

# OSモジュールをインポート
import os 
# tkinterから必要なクラスをインポート
from tkinter import Tk, filedialog, Button, Label  
# PILライブラリからImageクラスをインポート
from PIL import Image  

最後に使用したフォルダーを「Config.txt」に保存し、次回起動時にそのフォルダーを参照する。

# 設定ファイルの名前を定義
CONFIG_FILE = "Config.txt"  

# 最後に使用したフォルダのパスを保存する関数
def save_last_folder(folder_path):
    with open(CONFIG_FILE, 'w') as file:
        file.write(folder_path)

# 最後に使用したフォルダのパスを読み込む関数
def load_last_folder():
    if os.path.exists(CONFIG_FILE):
        with open(CONFIG_FILE, 'r') as file:
            return file.read().strip()
    return ""

jpg/jpegファイルをpngに変換する関数

# jpg/jpegファイルをpngに変換する関数
def convert_jpg_to_png(folder_path):
    jpg_files = [f for f in os.listdir(folder_path) if f.lower().endswith(('.jpg', '.jpeg'))]

    for jpg_file in jpg_files:
        img = Image.open(os.path.join(folder_path, jpg_file))
        base_name = os.path.splitext(jpg_file)[0]
        output_path = os.path.join(folder_path, f"{base_name}.png")
        img.save(output_path, "PNG")
        print(f"Converted {jpg_file} to {base_name}.png")

    lbl_result.config(text=f"Converted {len(jpg_files)} images to PNG!")
    save_last_folder(folder_path)

フォルダを選択するための関数

# フォルダを選択するための関数
def select_folder():
    last_folder = load_last_folder()
    folder_path = filedialog.askdirectory(initialdir=last_folder)
    if folder_path:
        convert_jpg_to_png(folder_path)

メインウィンドウを作成

# メインウィンドウを作成
root = Tk()  
# ウィンドウのタイトルを設定
root.title("JPG to PNG Converter")  

# メインウィンドウのサイズを変更
# ウィンドウのサイズを400x200ピクセルに設定
root.geometry("400x200")  

# "Select Folder"ボタンを作成
btn_select = Button(root, text="Select Folder", command=select_folder)
# ボタンをウィンドウに追加
btn_select.pack(pady=20)  

# 結果を表示するためのラベルを作成
lbl_result = Label(root, text="")
# ラベルをウィンドウに追加
lbl_result.pack(pady=20)  

GUIのメインループ処理

# GUIのメインループを開始
root.mainloop()  

Amazon アソシエイト


まとめ

いかがでしたでしょうか?

単純な処理しか入れておりませんが、単機能としては問題なさそうです。

ぜひご活用ください。


AI関連は日進月歩、日々之精進でございます。

最後まで読んで頂きありがとうございました。

AIさはら


頭の体操:解答

  • わかりましたか?探す事で脳トレになります。

解答


本日のAI着物美女

AI着物美女

Instagram

良かったらInstagramのフォローをお願いします。

https://www.instagram.com/ai_kimono_bijo/

非アダルトで運営しておりますので、職場でも安心して堪能いただけます。