Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03254.jsonl.gz/492

Do, 19. Mai 2022, Ralf Hersel
Wenn wir über programmatische Grafikbearbeitung reden, fällt allen Leser:innen ein Begriff ein. Na, welcher ist es? Es ist natürlich ImageMagick. Mit dem Grafik-Multitalent kann man auf der Kommandozeile alle erdenklichen Bildmanipulationen durchführen. Wer ähnliche Funktionen aus einem Python-Skript heraus anwenden möchte, kann die Bibliothek Pillow einsetzen.
Pillow ist ein freundlicher PIL-Fork von Alex Clark und Mitwirkenden. PIL ist die Python Imaging Library von Fredrik Lundh und Mitwirkenden. Anhand dreier Beispiele, möchte ich die Verwendung von Pillow beschreiben:
Bevor man mit Pillow loslegt, kann man im Paketmanager der eigenen Distribution überprüfen, ob die Library bereits installiert ist. Bei Manjaro ist das der Fall (python-pillow). Ausserdem kann mit dem Befehl pip list nachgesehen werden, ob man Pillow bereits über den Python Paketmanager pip (PIP installs packages) installiert hat. Falls dem nicht so ist, erfolg die Installation wie folgt: python3 -m pip install --upgrade Pillow
Nun kann die Pillow Bibliothek in Python-Skripten verwendet werden. Dann erzeugt man ein Image-Objekt, lädt ein bestehendes Bild und zeigt zum Beispiel dessen Grösse und Farbmodus an:
from PIL import Image im = Image.open("gnulinuxch.png") print(im.format, im.size, im.mode) PNG (160, 240) RGBA
Mit dem Befehl im.show() kann das Bild angezeigt werden. Dafür wird der Standardbildbetrachter verwendet.
Im nächsten Beispiel erstelle ich einen Bildausschnitt. Dafür wird ein auszuschneidendes Rechteck definiert und mittels crop auf das Bild angewandt. Mit save speichert man den Bildausschnitt unter einem neuen Namen:
region = im.crop((0,0,110,110)) region.save("gnu.png")
Im dritten Beispiel sieht man, wie Bilder gespiegelt oder gedreht werden können:
out = im.transpose(Image.Transpose.FLIP_LEFT_RIGHT) out = im.transpose(Image.Transpose.FLIP_TOP_BOTTOM) out = im.transpose(Image.Transpose.ROTATE_90) out = im.transpose(Image.Transpose.ROTATE_180) out = im.transpose(Image.Transpose.ROTATE_270)
Die von Pillow bereitgestellten Funktionen gehen natürlich weit über das hinaus, was in diesen einfachen Beispielen gezeigt wird. Man erkennt jedoch gut, wie das Arbeiten mit der Library funktioniert. Ein Blick in das Handbuch von Pillow erweitert den ersten Eindruck.