🖼️
PythonのPillowで画像に外枠をつける
はじめに
今回はpythonのPillowで画像に外枠をつけてみました。
外枠をつければZennの添付画像がさらに見やすくなるため、ぜひともマスターしたいところです。
方針
PillowのImageOps
モジュールを使います。
expand
メソッドで画像に枠線を追加することが出来るため、今回の用途にドンピシャです。
イメージ図
環境
Ubuntu 20.04
Python 3.11.1
検証
使用する画像
検証中に書いたスクラップのスクショに枠をつけてみましょう。
外枠がどこかわかりづらいですね。
コード実行
コードはこんな感じです。
app.py
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')
ポイントは
- sourceディレクトリの画像ファイルを加工し、destディレクトリに格納する
- pngファイルのみを対象とする。(
if filename.endswith('.png'):
) -
ImageOps.expand
でどのような枠線を追加するか設定する - Pillowの基本的な流れは以下。
- Image.open()関数を使用して画像ファイルを開く
- 各種のメソッドや関数を使ってImageオブジェクトを編集する
- Image.save()関数で編集後の画像を保存する
- このチュートリアルがわかりやすいです。
- https://pillow.readthedocs.io/en/stable/handbook/tutorial.html
です。
python app.py
を実行したらdestディレクトリの画像を見てみましょう。
動作確認
このような画像が出来上がります。
枠ができててわかりやすいです。
枠線の太さと色を変える
枠線の補足、色を赤に変えてみます。
このようにコードを変更すればOKです。
app.py
-add_border_to_images('./source', './dest', border=10, border_color='black')
+add_border_to_images('./source', './dest', border=1, border_color='red')
とするとこのような画像ができあがります。
完璧ですね。
おわりに
画像をわかりやすくできてよかったです。
ですがCLIだと万人向けではないですね、次回はwebアプリにしたいと思います。
参考
Discussion