Bilder mit Python und Pillow bearbeiten

Für die Bildbearbeitung steht in Python unter anderem die Bibliothek Pillow zur Verfügung. Es gibt zwar andere Bibliotheken, die teilweise mehr Möglichkeiten bieten, als dies Pillow vermag, allerdings ist Pillow am weitesten verbreitet.

Die Installation von Pillow kann mit pip vorgenommen werden:

python3 -m pip install --upgrade Pillow

Bild laden und anzeigen

Um Pillow verwenden zu können, muss diese Bibliothek zunächst importiert werden:

from PIL import Image

Interessant an dieser Importanweisung ist der Umstand, dass nicht Pillow importiert wird, sondern PIL. Dies hängt damit zusammen, dass Pillow ein Fork der Bibliothek PIL ist, die bereits seit einiger Zeit nicht mehr weiterentwickelt wird.

Als nächstes wird der Dateiname des zu ladenden Bildes der Variable filename zugewiesen:

filename = "img_1610.jpg"

Selbstverständlich könnte auch ein Pfad angegeben werden:

filename = "/Users/bodo/Pictures/img_1610.jpg"

Schließlich wird dieses Bild mit Image.open() geöffnet und mit show() angezeigt:

with Image.open(filename) as img:
    img.show()

Bildgröße ändern

Die aktuelle Bildgröße wird mit img.size ermittelt:

with Image.open(filename) as img:
    print(img.size)

Nebenbei bemerkt: Aufgrund der Dateiendung „jpg“ wird es sich um ein Bild im JPEG-Format handeln. Mit

print(img.format)

könnte man sich dies auch bestätigen lassen.

Kommen wir nun zum Ändern der Bildgröße. Dafür steht size zur Verfügung. Um die Bildgröße zu 600×400 zu ändern, müssen diese beiden Werte als Tupel übergeben werden:

resized = img.resize((600, 400))
resized.show()

Das in der Größe geänderte Bild könnte auch auf dem Schreibtisch gespeichert werden (hier auf einem macOS-System), wobei als Dateiname „resized_image.jpg“ verwendet wird:

resized = img.resize((600, 400))
resized.save("/Users/bodo/Desktop/resized_image.jpg")

Umwandlung in ein Schwarz-Weiß-Bild

In Python gibt es mehrere Möglichkeiten bzw. Bibliotheken, um ein Farbbild in ein Schwarz-Weiß-Bild umzuwandeln. Und selbstverständlich ist dies auch mit Pillow möglich. Für die Umwandlung steht hier convert() zur Verfügung:

with Image.open(filename) as img:
    grayscale_image = img.convert("L")
    grayscale_image.show()

Fazit

Die gezeigten Beispiele zeigen nur einen sehr kleinen Teil dessen, was mit Pillow alles möglich ist. Es lohnt sich, einen Blick in die offizielle Dokumentation zu werfen, um einen Überblick über die zahlreichen Funktionen erhalten.