💬
png_webp一括変換コード
フォルダの中身すべてを、指定フォルダに圧縮し、コピーします。
必要なライブラリのインストール
まず、画像処理ライブラリである Pillow をインストールする必要があります。コマンドプロンプトやターミナルで以下のコマンドを実行してください。
Bash
pip install Pillow
以下コード
import os
from PIL import Image
def convert_png_to_webp_in_folder(input_folder, output_folder, quality=80):
"""
指定されたフォルダ内のすべてのPNG画像をWebP形式に変換し、指定された出力フォルダに保存します。
Args:
input_folder (str): 入力PNG画像が格納されているフォルダのパス。
output_folder (str): 変換されたWebP画像を保存するフォルダのパス。
quality (int): WebP画像の品質 (0-100)。デフォルトは80。
"""
if not os.path.exists(input_folder):
print(f"エラー: 入力フォルダが見つかりません: '{input_folder}'")
return
if not os.path.exists(output_folder):
os.makedirs(output_folder)
print(f"出力フォルダを作成しました: '{output_folder}'")
converted_count = 0
for filename in os.listdir(input_folder):
if filename.lower().endswith(".png"):
input_path = os.path.join(input_folder, filename)
# 拡張子を.webpに変更
output_filename = os.path.splitext(filename)[0] + ".webp"
output_path = os.path.join(output_folder, output_filename)
try:
with Image.open(input_path) as img:
img.save(output_path, "webp", quality=quality)
print(f"'{filename}' を '{output_filename}' に変換しました。")
converted_count += 1
except Exception as e:
print(f"'{filename}' の変換中にエラーが発生しました: {e}")
if converted_count > 0:
print(f"\n合計 {converted_count} 個のPNG画像をWebPに変換しました。🎉")
else:
print("\n変換対象のPNG画像は見つかりませんでした。🤔")
if __name__ == "__main__":
print("PNG画像をWebPに一括変換します。")
# 入力ディレクトリの指定
while True:
input_dir = input("変換したいPNG画像が入っているフォルダのパスを入力してください(例: C:\\Users\\user\\Pictures\\PNGs): ")
# 両端の引用符を削除し、Windowsのパスのバックスラッシュをスラッシュに変換
input_dir = input_dir.strip('"').replace('\\', '/')
if os.path.isdir(input_dir):
break
else:
print("指定された入力フォルダが見つかりません。もう一度入力してください。")
# 出力ディレクトリの指定
while True:
output_dir = input("変換後のWebP画像を保存するフォルダのパスを入力してください(例: C:\\Users\\user\\Pictures\\WebPs): ")
# 両端の引用符を削除し、Windowsのパスのバックスラッシュをスラッシュに変換
output_dir = output_dir.strip('"').replace('\\', '/')
# 出力フォルダが存在しない場合は作成を試みる
if not os.path.exists(output_dir):
try:
os.makedirs(output_dir)
print(f"出力フォルダ '{output_dir}' を作成しました。")
break
except Exception as e:
print(f"出力フォルダの作成に失敗しました: {e}")
print("もう一度入力してください。")
else:
break
# 品質の設定
while True:
try:
quality_str = input("WebP画像の品質を0から100で入力してください(例: 85、デフォルトは80): ")
if not quality_str: # 空Enterの場合はデフォルト値を使用
conversion_quality = 80
print(f"品質をデフォルトの {conversion_quality} に設定しました。")
break
conversion_quality = int(quality_str)
if 0 <= conversion_quality <= 100:
break
else:
print("品質は0から100の間の整数で入力してください。")
except ValueError:
print("無効な入力です。整数を入力してください。")
convert_png_to_webp_in_folder(input_dir, output_dir, conversion_quality)
おまけ jpeg変換
import os
from PIL import Image
def convert_png_to_jpg_in_folder(input_folder, output_folder, quality=80):
"""
指定されたフォルダ内のすべてのPNG画像をjpeg形式に変換し、指定された出力フォルダに保存します。
Args:
input_folder (str): 入力PNG画像が格納されているフォルダのパス。
output_folder (str): 変換されたjpg画像を保存するフォルダのパス。
quality (int): jpg画像の品質 (0-100)。デフォルトは80。
"""
if not os.path.exists(input_folder):
print(f"エラー: 入力フォルダが見つかりません: '{input_folder}'")
return
if not os.path.exists(output_folder):
os.makedirs(output_folder)
print(f"出力フォルダを作成しました: '{output_folder}'")
converted_count = 0
for filename in os.listdir(input_folder):
if filename.lower().endswith(".png"):
input_path = os.path.join(input_folder, filename)
# 拡張子を.jpgに変更
output_filename = os.path.splitext(filename)[0] + ".jpg"
output_path = os.path.join(output_folder, output_filename)
try:
with Image.open(input_path) as img:
img.save(output_path, "jpeg", quality=quality)
print(f"'{filename}' を '{output_filename}' に変換しました。")
converted_count += 1
except Exception as e:
print(f"'{filename}' の変換中にエラーが発生しました: {e}")
if converted_count > 0:
print(f"\n合計 {converted_count} 個のPNG画像をjpgに変換しました。🎉")
else:
print("\n変換対象のPNG画像は見つかりませんでした。🤔")
if __name__ == "__main__":
print("PNG画像をjpgに一括変換します。")
# 入力ディレクトリの指定
while True:
input_dir = input("変換したいPNG画像が入っているフォルダのパスを入力してください(例: C:\\Users\\user\\Pictures\\PNGs): ")
# 両端の引用符を削除し、Windowsのパスのバックスラッシュをスラッシュに変換
input_dir = input_dir.strip('"').replace('\\', '/')
if os.path.isdir(input_dir):
break
else:
print("指定された入力フォルダが見つかりません。もう一度入力してください。")
# 出力ディレクトリの指定
while True:
output_dir = input("変換後のjpg画像を保存するフォルダのパスを入力してください(例: C:\\Users\\user\\Pictures\\jpgs): ")
# 両端の引用符を削除し、Windowsのパスのバックスラッシュをスラッシュに変換
output_dir = output_dir.strip('"').replace('\\', '/')
# 出力フォルダが存在しない場合は作成を試みる
if not os.path.exists(output_dir):
try:
os.makedirs(output_dir)
print(f"出力フォルダ '{output_dir}' を作成しました。")
break
except Exception as e:
print(f"出力フォルダの作成に失敗しました: {e}")
print("もう一度入力してください。")
else:
break
# 品質の設定
while True:
try:
quality_str = input("jpg画像の品質を0から100で入力してください(例: 85、デフォルトは80): ")
if not quality_str: # 空Enterの場合はデフォルト値を使用
conversion_quality = 80
print(f"品質をデフォルトの {conversion_quality} に設定しました。")
break
conversion_quality = int(quality_str)
if 0 <= conversion_quality <= 100:
break
else:
print("品質は0から100の間の整数で入力してください。")
except ValueError:
print("無効な入力です。整数を入力してください。")
convert_png_to_jpg_in_folder(input_dir, output_dir, conversion_quality)
Discussion