Bartłomiej 'furas' Burek
furas.pl
# prywatne notatki - Python, Linux, Machine Learning, etc.

Rysowanie w Pythonie - Pillow

2019.03.28 - czwartek / kategoria: Python / tagi: python /

Pod pojęciem rysowanie można rozumieć różne działania - jednym z nich może być tworzenie bitmapy (jpg/png) z naniesionymy elementami takimi jak kreski, figury (kwadrat, koło), teksty, inne bitmapy. Do takiego celu można wykorzystać moduł pillow (lub PIL).

Na początek utworzenie pustej bitmapy RGB o wymiarach 800x600 z czarnym (domyślnym) tłem i zapisanie w pliku "output.jpg".

from PIL import Image

img = Image.new("RGB", (800, 600))

img.save("output.jpg")

Można też ustawić inne tło - np. białe jak karta papieru, na które zwykle coś rysujemy.

from PIL import Image

img = Image.new("RGB", (800, 600), "white")

img.save("output.jpg")

save na podstawie rozszerzenia .jpg automatycznie zastosuje kompresję JPG ale można samodzielnie podać format i stworzyć np. plik JPG z rozszerzeniem .png lub PNG z roszerzeniem .txt

from PIL import Image

img = Image.new("RGB", (800, 600))

img.save("output.png", "JPEG")
from PIL import Image

img = Image.new("RGB", (800, 600))

img.save("output.txt", "PNG")

Rysowanie

Aby zacząć narysowanie trzeba dla bitmapy tworzyć obiekt Image.Draw, który dopiero pozwala na rysowanie.

from PIL import Image
from PIL import Image.Draw

img = Image.new("RGB", (800, 600), "white")

draw = Image.Draw(img)

# ... tu będziemy rysować ...

img.save("output.txt", "PNG")

Uwagi

Pillow potrafi czytać i zapisywać pliki w różnych formatach/kompresjach.

W dokumentacji znajduje się pełna lista obsługiwanych kompresji

Pillow portafi tworzyć obrazi z różną głębią barw - RGB, RGBA, 8-bitowa skala szarości, itp.

W dokumentacji znajduje się pełna lista obsługiwanych trybów

WERSJA ROBOCZA WPISU

python turtle przykład 1
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