Closed9
pythonのpillowで画像に外枠をつける
参考
公式
方針
PillowのImageOps
モジュールを使う。
expand
メソッドで画像に枠線を追加することが出来るため。ドンピシャ
題材
source
ディレクトリ内のファイルをすべてpillowにより枠線を追加し、
dest
ディレクトリに格納するスクリプト
使う画像
↑でのせた構成図にしましょう。
Zennの背景は白いので、記事とスクショの境界が少しわかりづらいです。
サンプルコード
import os
from PIL import Image, ImageOps
def add_border_to_images(source_directory, dest_directory, border, border_color):
for filename in os.listdir(source_directory):
if filename.endswith('.png'):
# "source_directory"内のpngファイルを順に処理する
source_image_path = os.path.join(source_directory, filename)
# 画像を開き、枠線を追加
image = Image.open(source_image_path)
bordered_image = ImageOps.expand(image, border=border, fill=border_color)
# 新しいファイル名を作成
new_filename = f"bordered_{filename}"
dest_image_path = os.path.join(dest_directory, new_filename)
# 枠線を追加した画像を保存
bordered_image.save(dest_image_path)
# 使用例
add_border_to_images('./source', './dest', border=10, border_color='black')
実行結果
外枠がついています。成功ですね。
枠線の色とサイズを変更する
これで目的は達成できましたが、
- 枠線の色を赤に変えてほしい
- 枠線が太すぎる
という意見も考えられるため、このようにコードを変更する
app.py
-add_border_to_images('./source', './dest', border=10, border_color='black')
+add_border_to_images('./source', './dest', border=1, border_color='red')
再確認
枠を補足し、赤色に変更しました!
色、サイズはexpand
メソッドのborder
,border_color
でそれぞれ変更可能です。
app.py
bordered_image = ImageOps.expand(image, border=border, fill=border_color)
このスクラップは2023/08/06にクローズされました