概要
- 特定のディレクトリにある画像をすべてWebPに変換
- 変換はPillowが勝手にするらしく初期値ではロスあり、品質80%で変換するらしい
- 画像の内容にもよるがFoooocusの出力画像ではPNG画像に比べ10分の1まで画像サイズが減少した
- jpgでもいいかもしれない
- たぶんPythonが入ってるだけでいい。(Python3.10で実行しました)
- Foooocusでは出力画像を自動で保存しておりPNGがたくさんあって邪魔だったので一括変換しました。
コード
Geminiの出力
import os
from PIL import Image
def convert_png_to_webp(root_dir):
"""
指定したディレクトリ以下のすべてのPNG画像をwebp形式に変換し、元のPNGファイルを削除します。
Args:
root_dir (str): 変換対象のルートディレクトリのパス。
"""
for dirpath, dirnames, filenames in os.walk(root_dir):
for filename in filenames:
if filename.lower().endswith(".png"):
png_filepath = os.path.join(dirpath, filename)
webp_filepath = os.path.splitext(png_filepath)[0] + ".webp"
with Image.open(png_filepath) as img:
img.save(webp_filepath, "webp")
print(f"変換完了: {png_filepath} -> {webp_filepath}")
except Exception as e:
print(f"変換失敗: {png_filepath} - {e}")
if __name__ == "__main__":
target_directory = "." # 変換したいフォルダのパスに置き換えてください
convert_png_to_webp(target_directory)
print("処理が完了しました。")
結果
WebP: