blog.furas.pl
# prywatne notatki - Python, Linux, Machine Learning, etc.

Rysowanie wieloboku z obwódką wypełnionego kolorem z użyciem PIL/Pillow w Pythonie

Przykład jak moduł PIL oraz Pillow pozwala na rysowanie wieloboku z obwódką i/lib wypełnionego kolorem.

Przykład 1

Poniższy kod tworzy trójkąty w narożnikach pustego obrazka

#!/usr/bin/env python
#-*- coding: utf-8 -*-

from PIL import Image, ImageDraw

# stworzenie pustego obrazka
img = Image.new('RGB', (100,100))

# obiekt powalający rysować na podanym obrazie
drw = ImageDraw.Draw(img)

# wielobok bez wypełnienia z domyślną białą obwódką
drw.polygon([95,5,80,5,95,20])

# wielobok bez wypełnienia i z czerwoną obwódką
drw.polygon([5,95,5,80,20,95], outline=(255,0,0))

# wielobok z zielonym wypełnieniem i bez obwódki
drw.polygon([5,5,5,20,20,5], fill=(0,255,0))

# wielobok z zielonym wypełnieniem i z czerwoną obwódką
drw.polygon([95,95,95,80,80,95], fill=(0,255,0), outline=(255,0,0))

# zapisanie do pliku
img.save('result.png')

pillow rysowanie wieloboków

Przykład 2

#!/usr/bin/env python
#-*- coding: utf-8 -*-from PIL import Image, ImageDraw

from PIL import Image, ImageDraw, ImageOps

# stworzenie pustego obrazka
img = Image.open('trzmiel.png')

# powiększenie obrazka
img_with_border = ImageOps.expand(img, border=5, fill='white')

# obiekt powalający rysować na podanym obrazie
drw = ImageDraw.Draw(img_with_border)

# width, height
w, h = img_with_border.size

# wymiary wieloboku - size 1, size 2
s1 = 25
s2 = 50

# wielobok z białym wypełnieniem i bez obwódki
drw.polygon([s1,0,s2,0,0,s2,0,s1], fill=(200,200,200))
drw.polygon([w-s1,0,w-s2,0,w,s2,w,s1], fill=(200,200,200))
drw.polygon([w-s1,h,w-s2,h,w,h-s2,w,h-s1], fill=(200,200,200))
drw.polygon([s1,h,s2,h,0,h-s2,0,h-s1], fill=(200,200,200))

# zapisanie do pliku
img_with_border.save('result.png')

pillow rysowanie wieloboków pillow rysowanie wieloboków

Książki: python-dla-kazdego-podstawy-programowania python-wprowadzenie python-leksykon-kieszonkowy python-receptury python-programuj-szybko-i-wydajnie python-projekty-do-wykorzystania black-hat-python-jezyk-python-dla-hackerow-i-pentesterow efektywny-python-59-sposobow-na-lepszy-kod tdd-w-praktyce-niezawodny-kod-w-jezyku-python aplikacje-internetowe-z-django-najlepsze-receptury