windows環境用
実行フォルダにあるjpegすべてに1ドットの黒いフチを付けます
# -*- coding: cp932 -*- from PIL import Image import os def add_border_to_images_in_current_folder(): # カレントディレクトリを取得 current_folder = os.getcwd() # カレントディレクトリ内のすべてのファイルをチェック for filename in os.listdir(current_folder): # Shift-JISでエンコードされたファイル名を扱う filename_shiftjis = filename.encode('cp932').decode('cp932') if filename_shiftjis.lower().endswith('.jpg') or filename_shiftjis.lower().endswith('.jpeg'): file_path = os.path.join(current_folder, filename_shiftjis) # 画像を開く with Image.open(file_path) as img: # 画像のサイズを取得 width, height = img.size # 新しい画像サイズ(元のサイズ + 2ピクセル) new_width = width + 2 new_height = height + 2 # 新しい画像を作成(黒い背景) new_img = Image.new("RGB", (new_width, new_height), "black") # 元の画像を中央に配置 new_img.paste(img, (1, 1)) # 画像を保存(元のファイル名で上書き) new_img.save(file_path) add_border_to_images_in_current_folder()
こちらはPNG用。透明は維持。
# -*- coding: cp932 -*- from PIL import Image import os def add_black_border_to_png_images_in_current_folder(): # カレントディレクトリを取得 current_folder = os.getcwd() # カレントディレクトリ内のすべてのファイルをチェック for filename in os.listdir(current_folder): if filename.lower().endswith('.png'): file_path = os.path.join(current_folder, filename) # 画像を開く with Image.open(file_path) as img: # 画像のサイズを取得 width, height = img.size # 新しい画像サイズ(元のサイズ + 2ピクセル) new_width = width + 2 new_height = height + 2 # 新しい画像を作成(黒い背景のRGBA画像) new_img = Image.new("RGBA", (new_width, new_height), (0, 0, 0, 255)) # アルファチャンネルを取得(存在する場合) if img.mode in ('RGBA', 'LA'): mask = img.split()[-1] else: mask = None # 元の画像を中央に配置 new_img.paste(img, (1, 1), mask) # 画像を保存(元のファイル名で上書き) new_img.save(file_path) add_black_border_to_png_images_in_current_folder()