Python で作ったマットボード風のやつ
写真をマットボードで飾ってみるか、ということで Python で作ってみました。
マットボードとは、こんなやつです。よく知りませんけど。
Mat Board
Picture Mat
Picture Frame Mat
マットボード
こんなのができました。
中央の白いところは透明ですので、写真に重ねると窓から写真が覗くリアルなマットボードのようです。
データをアップしておきます。
Python スクリプト
煮るなり焼くなり好きにしてください。
もしかして、煮ても焼いても食えないでしょうか。
# マット紙風
from PIL import Image, ImageDraw
import math
# マット紙全体の大きさ
base_width = 2560
base_height = 1920
base_size = (base_width, base_height)
# 窓の部分の大きさ
window_width = 1280
window_height = 960
window_size = (window_width, window_height)
# マット紙に対する窓の部分の座標
window_left = round((base_width - window_width)/ 2)
window_upper = round((base_height - window_height)/ 2)
window_right = window_left + window_width
window_lower = window_upper + window_height
window_rect = (window_left, window_upper, window_right, window_lower)
# 45°カット部の幅
cut_width = 25
# カット部の座標
outer_left = window_left - cut_width
outer_upper = window_upper - cut_width
outer_right = window_right + cut_width
outer_lower = window_lower + cut_width
# 台紙を作る
base = Image.new("RGBA", base_size, color = (245, 254, 247, 255))
d_base = ImageDraw.Draw(base)
# 外形線を描く
d_base.rectangle((0, 0, base_width - 1, base_height - 1), fill = None, outline=(128, 128, 128, 255), width=1)
# 上下左右のカット部(台形)の座標
rect_left = [(outer_left, outer_upper), (outer_left, outer_lower),
(window_left, window_lower), (window_left, window_upper)]
rect_upper = [(outer_left, outer_upper), (outer_right, outer_upper),
(window_right, window_upper) , (window_left, window_upper)]
rect_right = [(window_right, window_upper), (window_right, window_lower),
(outer_right, outer_lower), (outer_right, outer_upper)]
rect_lower = [(window_left, window_lower), (window_right, window_lower),
(outer_right, outer_lower), (outer_left, outer_lower)]
# カット部を描く
d_base.polygon(rect_left, fill =(200,200,200,255), outline=(200, 200, 200, 255), width=1)
d_base.polygon(rect_upper, fill=(200,200,200,255), outline=(200, 200, 200, 255), width=1)
d_base.polygon(rect_right, fill=(255,255,255,255), outline=(200, 200, 200, 255), width=1)
d_base.polygon(rect_lower, fill=(255,255,255,255), outline=(200, 200, 200, 255), width=1)
# 窓を透明にする
d_base = ImageDraw.Draw(base)
d_base.rectangle(window_rect, fill=(0, 0, 0, 0), outline=(192, 192, 192, 255), width=1)
base.save('./mat_board.png')
ファイル名に mat_board という語を入れるべきでした。
ま、ファイル名を変えても問題ありません。拡張子が py であれば。
スクリプトを書き換えて、大きさや色を変えます。
サイズ関連
次の3か所
# マット紙全体の大きさ
# 窓の部分の大きさ
# 45°カット部の幅
色
color = とか fill = とかを変える。
マットボードの色は、「# 台紙を作る」の base 色 color を変える。
次は、(16, 16, 16, 255) にした場合。
# 台紙を作る
base = Image.new("RGBA", base_size, color = (16, 16, 16, 255))
出来上がったもの
外形線
outline = (R, G, B, Opacity)
width = 1
Pillow Documentation
主に、この辺↓とか
この辺↓
動作環境
パーソナルコンピューター
Python が使えること
Pillow がインストールされていること
Pillow を使って多角形を描く方法を学びました。
t.koba
この記事が気に入ったらサポートをしてみませんか?