import os
from PIL import Image
import glob
def batch_process_images(input_dir, output_dir, target_width, base_name):
"""
指定したディレクトリ内のJPG画像をリサイズし、指定した名前の後にハイフン付き連番を付けて保存する。
"""
# 出力ディレクトリがなければ作成
if not os.path.exists(output_dir):
os.makedirs(output_dir)
print(f"フォルダを作成しました: {output_dir}")
# JPGファイルを取得(大文字小文字の両方に対応)
files = glob.glob(os.path.join(input_dir, "*.jpg")) + glob.glob(
os.path.join(input_dir, "*.JPG"))
files.sort() # 名前順にソート
if not files:
print("画像ファイルが見つかりませんでした。")
return
print(f"{len(files)} 枚の画像を処理します...")
for i, file_path in enumerate(files, 1):
try:
with Image.open(file_path) as img:
# 元のサイズを取得
width, height = img.size
# アスペクト比を維持して新しい高さを計算
aspect_ratio = height / width
target_height = int(target_width * aspect_ratio)
# リサイズ処理
resized_img = img.resize((target_width, target_height),
Image.Resampling.LANCZOS)
# 新しいファイル名を作成(例: BASE_NAME-1.jpg)
new_file_name = f"{base_name}-{i:01d}.jpg"
save_path = os.path.join(output_dir, new_file_name)
# 保存
resized_img.save(save_path, "JPEG", quality=85)
print(f"保存完了: {new_file_name}")
except Exception as e:
print(f"エラー({file_path}): {e}")
print("\nすべての処理が完了しました。")
if __name__ == "__main__":
# --- 設定項目 ---
INPUT_FOLDER = "./images" # 元画像があるフォルダ
OUTPUT_FOLDER = "./processed" # 保存先フォルダ
TARGET_WIDTH = 1000 # 変更後の幅(ピクセル)
BASE_FILE_NAME = "202601news" # 新しいファイル名の基本形
# ----------------
batch_process_images(INPUT_FOLDER, OUTPUT_FOLDER, TARGET_WIDTH,
BASE_FILE_NAME)
|