🍁
[Python] Pillowで長方形を描画する
はじめに
Pythonで画像処理といえば、Pillowですが、普段使わないだけに中々使いこなせません。なので体系的に学ぶような記事ではなく、長方形に特化した内容を書きたいと思います
環境
- Python: 3.9系
- Pillow: 8.0.1
Pillowがインストールされていない場合はインストールしてください
pip install Pillow
Pillowで長方形を描画する方法
サンプルコード
from PIL import Image, ImageDraw
rect = Image.new("RGBA", (1280, 720), (0, 0, 255))
rect_d = ImageDraw.Draw(rect)
rect_d.rectangle(
[(200, 100), (500, 300)], fill=(255, 0, 0), outline=(0, 255, 0), width=10
)
rect.show()
rect.save("sample.png")
解説します
手順
手順は以下のような感じです。その中からピックアップして詳しく説明します。
- importする
- ベースになる画像を生成する(もしくは読み込む)
- ImageDrawインスタンスを生成して図形を描画できるようにする
- rectangleメソッドを使って描画する
- (任意)プレビューを表示
- (任意)保存する
Image.newの引数
塗り潰し色のを指定しない場合は、透明なPNGになります。塗り潰しの指定でfill=
とは書かないので注意
# 1280x720の透明の画像を生成
rect = Image.new("RGBA", (1280, 720))
# 塗り潰しをしたいなら第3引数を指定する(この場合は黒)
rect = Image.new("RGBA", (1280, 720), (0, 0, 0))
rectangleの指定方法
# 図形を描画できるように、ImageDrawインスタンスを生成
rect_d = ImageDraw.Draw(rect)
# [(200, 100), (500, 300)]の座標に画像を生成して
# fillで指定した色で塗り潰して(この場合は赤)
# outlineで指定した色で境界線をひく(この場合は緑)
rect_d.rectangle(
[(200, 100), (500, 300)], fill=(255, 0, 0), outline=(0, 255, 0), width=10
)
引数名 | 意味 |
---|---|
第1引数(必須) | 描画する長方形の座標 座標はベース画像の左上が起点になる →右方向:+x ↓下方向:+y |
fill(任意) | 図形の塗り潰しの色 指定しない場合は透明 |
outline(任意) | 境界線の色 fillの指定がない場合は、白の境界線が勝手に描画される |
width(任意) | 境界線の太さを指定する。境界線は長方形の内側に描画される width=0にしておけば境界線は表示されない |
Discussion