from PIL import Image
import os
from pathlib import Path
import math # 追加: mathモジュールをimport
# 対象のフォルダパス
folder_path = Path(__file__).resolve().parent
# 出力フォルダ名
output_folder = "Resize"
# 出力フォルダのパスを生成
output_folder_path = os.path.join(folder_path, output_folder)
# 出力フォルダが存在しなければ新規作成
if not os.path.exists(output_folder_path):
os.makedirs(output_folder_path)
# フォルダ内のファイルを取得
files = os.listdir(folder_path)
for file in files:
# 拡張子がwebp、jpg、pngの画像ファイルのみ処理する
if file.endswith(".webp") or file.endswith(".jpg") or file.endswith(".png"):
# 画像のフルパスを生成
file_path = os.path.join(folder_path, file)
# 画像を開く
image = Image.open(file_path)
# 画像の長辺を取得
max_size = max(image.size)
# 画像の縦横比を保持したまま長辺を768ピクセルにリサイズ
if max_size > 768:
ratio = 768 / max_size
new_width = math.ceil(image.width * ratio) # 切り上げで新しい幅を計算
new_height = math.ceil(image.height * ratio) # 切り上げで新しい高さを計算
image = image.resize((new_width, new_height), Image.ANTIALIAS)
# 出力ファイル名を生成(拡張子をpngに変更)
output_file = os.path.splitext(file)[0] + ".png"
# 画像をPNG形式で保存
output_path = os.path.join(output_folder_path, output_file)
image.save(output_path, "PNG")
print(f"{file} を {output_file} にリサイズして保存しました。")
# 元のファイルを削除する場合は以下のコメントを外す
#os.remove(file_path)
長辺基準で指定サイズにリサイズ(縦横比はそのまま)してResizeフォルダに移動