【Python】指定フォルダ内の画像を一括トリミング

画像の周りの不要な余白(黒、白)を削除するコード

from PIL import Image, ImageChops
import os

def crop_images(input_folder, output_folder, bg_color):
    # 背景色のRGB値を決定
    if bg_color == 'black':
        bg_rgb = (0, 0, 0)
    elif bg_color == 'white':
        bg_rgb = (255, 255, 255)
    else:
        print(f"無効な背景色です: {bg_color}")
        return

    # フォルダ内の画像ファイルを読み込み、トリミングして保存
    for filename in os.listdir(input_folder):
        filepath = os.path.join(input_folder, filename)
        with Image.open(filepath) as img:
            # 背景色の抽出
            bg_img = Image.new('RGB', img.size, bg_rgb)
            # 差分画像の生成
            diff_img = ImageChops.difference(img, bg_img)
            # クロップ範囲の計算
            crop_range = diff_img.convert('RGB').getbbox()
            # クロップの実行と出力 画像を保存
            crop_img = img.crop(crop_range)
            output_filepath = os.path.join(output_folder, filename)
            try:
                crop_img.save(output_filepath)
            except Exception as e:
                print(f"画像の保存に失敗しました: {filename}, {e}")

# 画像があるフォルダを指定
input_folder = "input_folder"

# トリミングした画像を保存するフォルダを指定
output_folder = "output_folder"

# 背景色を選択
bg_color = input("背景色を選択してください(black/white):")

# 関数を呼び出して画像をトリミング
crop_images(input_folder, output_folder, bg_color)
print("保存しました")
元画像 768×768
トリム後 512×512

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


*