「さはら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着物美女
良かったらInstagramのフォローをお願いします。
https://www.instagram.com/ai_kimono_bijo/
非アダルトで運営しておりますので、職場でも安心して堪能いただけます。