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

Rysowanie planu mieszkania za pomocą PIL/Pillow w Pythonie

Rysowanie planu mieszkania z pomocą Pillow.

Przykład planu mieszkania w postaci współrzędnych początku i końca ściany.

Dla uwidocznienia ścian każda jest rysowana innym kolorem.

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

from PIL import Image, ImageDraw

# współrzędne ścian (poczatek_x, poczatek_y, koniec_x, koniec_y)
mieszkanie = [
    # kuchnia
    (0, 0, 100, 0),
    (0, 0, 0, 100),
    (0, 100, 100, 100),
    # kuchnia - drzwi do korytarza
    (100, 100, 100, 80),
    (100, 0, 100, 40),
    # korytarz - drzwi wyjsciowe
    (100, 0, 120, 0),
    (160, 0, 180, 0),    
    # korytarz
    (180, 0, 180, 100),
    # korytarz - drzwi do pokoju
    (180, 100, 160, 100),    
    (100, 100, 120, 100),
    # pokoj
    (0, 100, 0, 200),    
    (0, 200, 180, 200),    
    (180, 200, 180, 100),    
]

# kolory ścian
colors = [
    "#880000", "#884400", "#888800", "#008800",
    "#008888", "#000088", "#440088", "#880088"
]
colors_count = len(colors)
colors_selected = 0

# stworzenie pustego obrazka 300x300 z białym tłem
img = Image.new('RGB', (300,300), (255,255,255))

# obiekt pozwalający rysować na obrazku
drw = ImageDraw.Draw(img)

# rysowanie kolejnych ścian różnymi kolorami
for sciana in mieszkanie:

    # współrzędne końców ściany przesunięte bardziej na środek
    x1, y1, x2, y2 = sciana
    sciana = (x1+50, y1+50, x2+50, y2+50)

    # rysowanie ściany
    drw.line(sciana, width=5, fill=colors[colors_selected])

    # kolejny kolor modulo ilość kolorów
    colors_selected = (colors_selected + 1) % colors_count

# pokazanie na ekranie    
img.show()

# zapisanie do pliku
img.save('mieszkanie.png')
pillow rysuje plan mieszkania
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