image image


image

PIL, Pillow und (Anaconda-) Python

Als ich kürzlich meinen Artikel zur animierten Sinuskurve in der Matplotlib veröffentlichte, erreichte mich eine Email eines Lesers, der verunsichert war, weil er nicht wußte, daß der PillowWriter die Installation von Pillow voraussetze. Natürlich hatte er Recht. Ich bin ein jahrzehntelanger Python-Scripter und außerdem Anaconda-Python-Nutzer (und die Anaconda-Distribution liefert Pillow gleich mit), daher hatte ich überhaupt nicht daran gedacht, daß es Nutzer geben könnte, die Pillow nicht kennen.

Was ist also Pillow? Dafür muß man ein wenig in die Historie zurückgehen. Jahrelange Standard-Bibliothek für die Bildverarbeitung mit Python war die Python Image Library von Frederik Lundh und Mitstreitern. Aus irgendwelchen Lizenzgründen mußte sie trotz batteries included separat heruntergeladen werden. Aber irgendwann war bei PIL mal die Luft raus. Sie steht zwar heute noch zum Download bereit, läuft aber nur noch mit Python 2.7. Daher hatten Alex Clark und Mitstreiter vor einigen Jahren Pillow ins Leben gerufen. Pillow ist die freundliche PIL-Fork für Python 3 und bis heute tatsächlich weitestgehend mit PIL kompatibel. Und Pillow ist heute – zumindest für Python 3 – so etwas wie ein Standard, wenn es um Bildverarbeitung und Bildmanipulation geht.

PIL/Pillow sind so etwas wie »Photoshop für Programmierer« und eigentlich dafür ausgelegt, große Mengen von Bildmanipulationen im Batch-Betrieb durchzuführen, also zum Beispiel hunderte, wenn nicht gar tausende von thumbnails zu erzeugen. Außerdem gibt es unzählige Filter-, Morphing-, Paletten- und sonstige Module. PIL/Pillow sind daher für die Python-Welt das, was ImageJ für die Java-Welt ist. Nur im Gegensatz zu ImageJ besitzen PIL/Pillow keine GUIs, müssen daher komplett programmiert werden. Wie sieht das also aus?

from PIL import Image
import os

file_path = os.path.dirname(os.path.abspath(__file__))
os.chdir(file_path)

im_path = os.path.join("images", "sechseck.jpg")
im = Image.open(im_path)

# Hier können jetzt nahezu unendlich viele
# Manipulationen am Bild vorgenommen werden.

im.show()

Zuerst muß ich – natürlich – PIL importieren. Der Import von os und die darauffolgenden zwei Zeilen sind dem Umstand geschuldet, daß meine Entwicklungsumgebung als current working directory immer das Wurzelverzeichnis des Projekt setzt, und das ist selten das Verzeichnis, in dem der Quellcode liegt. Auch die dritte Zeile ist streng genommen überflüssig, da meine Entwicklungsumgebung Mac only ist und ich mir daher über den Backslash (\), den Windows als Verzeichnistrenner nutzt, keine Gedanken machen müßte.

Dann lade und öffne ich die Bilddatei. Danach kann ich all die tausend oder mehr Manipulationen am Bild vornehmen, die PIL/Pillow mir offerieren. Wenn ich damit durch bin, speichere ich normalerweise das Bild. Hier lasse ich es mit show() anzeigen. Die Methode show() ist für Entwicklungs- und Debugging-Zwecke sehr nützlich, aber zeitraubend. Sie speichert nämlich das Bild temporär und ruft dann ein Hilfsprogramm auf, das das Betriebssystem zur Anzeige von Bildern vorgesehen hat. In meinem Fall ist es Apples »Vorschau«. Welche Programme dafür unter Windows oder Linux genutzt werden, weiß ich leider nicht. Wenn es unter Linux der Gimp ist, hat man tatsächlich ein Performance-Problem. 😜

Installation

Wie installiert man nun Pillow. Die Software gibt es nicht nur auf conda, sondern natürlich auch auf PyPi. Wie oben schon gesagt, wird das Teil bei Anaconda normalerweise per Default mitinstalliert, hat man es aber (aus welchen Gründen auch immer) nicht auf seiner Festplatte, genügt ein

conda install pillow

und bei jeder anderen Python-Distribution sollte man es mit

pip install pillow

auf seine Maschine geladen bekommen. Zu beachten ist, daß PIL und Pillow nicht zusammen in einer Python-Distribution existieren können. Sollte man also noch ein altes PIL in seiner Umgebung haben, muß man dieses vorher deinstallieren.

Ich habe jetzt direkt Lust bekommen, mal ein paar Bildmanipulationen mit Pillow durchzuführen. Vielleicht wird daraus noch ein kleines Tutorial oder sogar eine kleine Tutorial-Reihe. Still (and always) digging!


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung

Diese Spalte wurde absichtlich leergelassen!


Werbung


image  image  image
image  image  image


image