Pillowの座標と長方形・線

Pocket

Pythonで図形を描く場合、Pillowを使うことがあります。
通常は気にしなくていいのですが、細かい図形を描く場合、ピクセル単位の挙動が気になります。
まとめてみました。

イメージ

im = Image.new("RGB", (10, 10), "white")

このように書いた場合、10*10の画像が描かれます。
座標としては左上が(0,0)、右下が(9,9)となります。

長方形

draw.rectangle((1, 1, 5, 5), fill="blue")

このように書いた場合、5*5の画像が描かれます。
左上が(1,1)、右下が(5,5)となります。辺の長さは5です。

draw.line((2, 2, 2, 7), fill="green", width=3)

このように書いた場合、(2,2)と(2,7)を結ぶ線が描かれます。太さは3です。
(2,2)と(2,7)を結ぶ線が1ピクセル、両側に1ピクセルずつで太さは3ピクセルとなります。

太さが奇数の場合は分かりやすいです。偶数の場合はどうなるでしょうか。

draw.line((1, 5, 8, 5), fill="red", width=4)

このように書いた場合、(1,5)と(8,5)を結ぶ線が描かれます。太さは4です。
(1,5)と(8,5)を結ぶ線が1ピクセル、片側に2ピクセル、反対側に1ピクセルで太さは4ピクセルとなります。中心がずれます。
線を使うときは太さを奇数にするか、lineでなくrectangleを使うといいでしょう。

[ 2023年5月31日 | カテゴリー: Python | タグ: ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報