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()