ども!今回はPythonのPillowというライブラリを用いて、画像にフレームを合成する方法について解説しています。自作のフレームと撮影した画像を合成することで、単に印刷するよりもちょっとだけぽく見える画像を作成することができます。年賀状で画像を変更しまくりたい時とかには重宝するかもしれません。
ご挨拶
ども!ブログリハビリ中の龍ちゃんです。5件も投稿すれば、リハビリは完了でしょう。徐々に執筆速度が戻ってきているように感じています。一番はアイデアの回路が戻ってくることなのですが、この辺はブログだけでなく読書とかもなのですけどね。
今回は、OSC広島に持って行った成果物の要素を抽出した内容になります。こちらのブログで書いていた通り、チームのメンバーが優秀だったのでPythonのソースはあまり触っていません。フレームの合成は担当していたので、画像周りに関係するブログになります。この辺のソースコードはネットにいっぱい落ちていますが、備忘録的にまとめていきたいと思います。(ちなみに自分のブログのコピペです)
今回対象とするシナリオは、「Pythonで指定の画像と用意したフレームを合成する」となります。使用するものとしては、PythonのライブラリであるPillow
を使用しています。
ソースコード
まずは必要なものから揃えましょう。まずは、ライブラリのインストールです。
pip install pillow
そして、合成したいフレームを用意しましょう。部署単位で自由に使うことができるキャラクターがいるとうれしいことがいっぱいですね。ちなみに上のキノコとタケノコは同僚が書いてくれたものです。ぜひ参考にダウンロードして使ってみてください。
以下がサンプルコードとなります。
from PIL import Image
def combine_images(base_image_path, overlay_image_path, output_path):
# 画像を読み込む
base_image = Image.open(base_image_path)
overlay_image = Image.open(overlay_image_path)
# 重ね合わせる画像のサイズを調整(必要に応じて)
overlay_image = overlay_image.resize(base_image.size)
# 画像を合成
base_image.paste(overlay_image, (0, 0), overlay_image)
# 結果を保存
base_image.save(output_path)
# 関数を呼び出し、画像を合成
combine_images(
"合成元のベース画像",
"合成したいフレーム画像",
"作成したソースの出力先パス",
)
# サンプルはこんな感じ
# combine_images("input.png", "frame.png", "output.png")
サンプルコードにはコメントをChatGPTで記入しています。
詰まった点について紹介しておきます。気を付けなければならない点もありますので、記載しておきます。
- 入力の画像サイズとフレームの画像サイズが異なる場合は、リサイズを挟まないといけない
- 処理速度のためには、入力サイズとフレームのサイズを一致させておくと楽
フレームを自作するとその辺は動的に変更できるのが素晴らしい点です。皆さんもFigmaで自作フレームを作ってみては?
終わりに
さて!今回はPythonを用いたちょこっとしたプログラムになります。画像をさくっといじくりまわせるのは、Pythonの素晴らしいところです。画像に対して画像を合成したり、文字を合成したりできると幅が広がります。
Pythonで文字を合成するプログラムについては、こちらで解説しています。
いや~最近ブログ投稿をサボっていたので、リハビリを重ねています。ちょこちょこ書いていくので、気が向いたら読んでみてください。ポエムを多めに投稿する予定なので、こちらもウォッチしてみてね。グッ!( •̀ᴗ•́ )و ̑̑