mieki256's diary



2019/11/02() [n年前の日記]

#2 [aggdraw][python] aggdrawを試用してみた

Pillow の Image に、アンチエイリアスをかけた状態で図形描画等ができる、aggdraw なるライブラリがあるらしいので少し試用してみたり。

_aggdraw - PyPI
_pytroll/aggdraw: Python package wrapping AGG2 drawing functionality
_AggDraw - aggdraw 1.3.8 documentation

環境は、Windows10 x64 1903 + Python 2.7.17 + Pillow 6.2.1 + aggdraw 1.3.11。

インストールは、以下でいいのかな。たぶん。
pip install aggdraw

aggdrawで描いてみた事例。 :

_01_aggdraw.py
from PIL import Image
import aggdraw
import math


# aggdraw
im = Image.new('RGBA', (512, 512), (255, 255, 255, 255))
d = aggdraw.Draw(im)
pen = aggdraw.Pen((0, 0, 0, 255), 2.0)  # color, width
cx, cy = 256, 256
for i in range(0, 360, 5):
    x = 240 * math.cos(math.radians(i)) + cx
    y = 240 * math.sin(math.radians(i)) + cy
    d.line((cx, cy, x, y), pen)
d.flush()
im.save("./output_aggdraw.png")

出力結果。

output_aggdraw.png
_output_aggdraw.png

アンチエイリアスがかかっている。

ImageDrawで描いてみた事例。 :

Pillow の ImageDraw を使って描いてみた事例。

_02_imagedraw.py
from PIL import Image, ImageDraw
import math


# ImageDraw
im = Image.new("RGBA", (512, 512), (255, 255, 255, 255))
d = ImageDraw.Draw(im)
cx, cy = 256, 256
for i in range(0, 360, 5):
    x = int(240 * math.cos(math.radians(i)) + cx)
    y = int(240 * math.sin(math.radians(i)) + cy)
    d.line((cx, cy, x, y), fill=(0, 0, 0, 255), width=2)
im.save("./output_imagedraw.png")

output_imagedraw.png
_output_imagedraw.png

アンチエイリアスがかかってないのが分かる。

ImageDrawで描いてみた事例その2。 :

Pillow の ImageDraw を使って描いてみた事例。2倍のサイズで描いてから、1/2に縮小してみる。

_03_imagedraw2.py
from PIL import Image, ImageDraw
import math


# ImageDraw
im = Image.new("RGBA", (1024, 1024), (255, 255, 255, 255))
d = ImageDraw.Draw(im)
cx, cy = (256 * 2), (256 * 2)
for i in range(0, 360, 5):
    x = int((240 * 2) * math.cos(math.radians(i)) + cx)
    y = int((240 * 2) * math.sin(math.radians(i)) + cy)
    d.line((cx, cy, x, y), fill=(0, 0, 0, 255), width=(2 * 2))

im.thumbnail((512, 512), Image.ANTIALIAS)
im.save("./output_imagedraw2.png")

output_imagedraw2.png
_output_imagedraw2.png

若干それっぽくアンチエイリアスがかかったような雰囲気にはなっている。

問題点。 :

aggdraw のライセンスがちょっとよくわからない。一般的なライセンスではないようで。

aggdraw が使っている AGG とやらにバグがあったりもするようで、例えば透明度を指定すると色が妙なことになる時もあるっぽい。

_Brush/Pen transparency weirdness - Issue #16 - pytroll/aggdraw

以上です。

過去ログ表示

Prev - 2019/11 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project