PILは、このための優れたツールです。
import Image
import ImageDraw
img = Image.open(...).convert('RGBA')
x = ['10', '30', '70']
y = ['15', '45', '90']
# convert values to ints
x = map(int, x)
y = map(int, y)
img2 = img.copy()
draw = ImageDraw.Draw(img2)
draw.polygon(zip(x,y), fill = "wheat")
img3 = Image.blend(img, img2, 0.5)
img3.save('/tmp/out.png')
の呼び出し署名draw.polygon
は次のとおりです。
def polygon(self, xy, fill=None, outline=None):
したがって、オプションはfill
とだけoutline
です。私はこの情報を見つけるためにソースコードを調べました。
IPythonは私に言った:
In [38]: draw.polygon?
...
File: /usr/lib/python2.7/dist-packages/PIL/ImageDraw.py
それは私にどこを見るべきかを示しました。
の上に半透明のポリゴンを描画するimg
には、画像のコピーを作成します。コピーの1つで、アルファなしのフルカラーでポリゴンを描画します。次に、Image.blendを使用して、元の画像と設定されたレベルのコピーを組み合わせますalpha
。各ピクセルについて:
out = image1 * (1.0 - alpha) + image2 * alpha