1. Einführung
Überblick über Python und Pillow
Python ist eine Programmiersprache, die von vielen Programmierern und Data Scientists wegen ihrer einfachen Syntax und der Vielzahl an Bibliotheken geschätzt wird. Sie wird in unterschiedlichsten Anwendungsbereichen eingesetzt. Insbesondere die auf Bildverarbeitung spezialisierte Bibliothek Pillow (früher PIL: Python Imaging Library) ist eine der bekanntesten Bildverarbeitungsbibliotheken für Python und wird weit verbreitet verwendet.
Pillow unterstützt verschiedene Bildformate wie JPEG, PNG und GIF und ermöglicht eine breite Palette von Bildoperationen wie Größenänderung, Zuschneiden, Filteranwendung und das Hinzufügen von Text. Die Bibliothek wird in vielen Anwendungen und Projekten eingesetzt, wenn das Laden, Speichern oder Bearbeiten von Bildern erforderlich ist.
Ziel dieses Artikels
In diesem Artikel werden grundlegende sowie fortgeschrittene Bildverarbeitungsoperationen mit der Pillow-Bibliothek für Python ausführlich erklärt. Dabei werden grundlegende Operationen wie das Laden und Speichern von Bildern, das Ändern der Bildgröße, das Drehen von Bildern, Filteranwendungen sowie das Zeichnen von Text und das Kombinieren von Bildern vorgestellt.
Nach dem Lesen dieses Artikels werden Sie in der Lage sein, Pillow umfassend zu nutzen und das Wissen und die Fähigkeiten in Ihren eigenen Projekten praktisch einzusetzen.
2. Installation von Pillow
2.1 So installieren Sie Pillow in Ihrer Python-Umgebung
Um Pillow verwenden zu können, müssen Sie die Bibliothek zunächst in Ihrer Python-Umgebung installieren. Die Installation ist sehr einfach und kann mit folgendem Befehl im Terminal (unter Windows in der Eingabeaufforderung) durchgeführt werden:
pip install Pillow
pip
ist ein Tool zur Verwaltung von Python-Paketen. Mit dem oben genannten Befehl wird die Pillow-Bibliothek automatisch installiert. Nach erfolgreicher Installation können Sie Bilder verarbeiten.
2.2 Überprüfung der Funktionalität
Nach der Installation von Pillow können Sie mit einem einfachen Code testen, ob die Bibliothek korrekt funktioniert. Schreiben Sie folgenden Code in eine Python-Datei und führen Sie diese aus:
from PIL import Image
# Code zum Testen von Pillow
img = Image.new('RGB', (100, 100), color = 'red')
img.save('test_image.png')
In diesem Beispiel wird ein 100×100 Pixel großes, rotes Bild erstellt und unter dem Namen „test_image.png“ gespeichert. Wenn die Datei korrekt erstellt wurde, ist Pillow erfolgreich installiert und einsatzbereit.
2.3 Häufige Installationsprobleme und Lösungen
Manchmal können während der Installation von Pillow Probleme auftreten. Im Folgenden sind einige häufige Probleme und deren Lösungen aufgeführt:
- Veraltete Python-Version
Pillow unterstützt Python ab Version 3.x. Bei älteren Python-Versionen kann die Installation fehlschlagen. Überprüfen Sie Ihre Version mitpython --version
und aktualisieren Sie sie bei Bedarf. - Fehlende Abhängigkeiten
Bei der Installation von Pillow können erforderliche Abhängigkeiten fehlen. Befolgen Sie die Fehlermeldungen und installieren Sie fehlende Pakete manuell oder verwenden Sie folgende Option, um Abhängigkeiten automatisch zu installieren:
pip install Pillow --upgrade
- Umgebungsvariablen
Insbesondere unter Windows kann es vorkommen, dass Pillow nicht richtig funktioniert, wenn die Pfade zu Python oder Pip nicht korrekt in den Umgebungsvariablen gesetzt sind. Überprüfen Sie die Einstellungen und stellen Sie sicher, dass die Pfade korrekt sind.

3. Laden und Anzeigen von Bildern
3.1 Wie Sie Bilddateien mit Python laden
Das Laden von Bildern ist der grundlegende Schritt bei der Bildverarbeitung mit Pillow. Zuerst wird gezeigt, wie eine bestimmte Datei geladen wird. Mit der Methode Image.open()
können Sie Bilder einfach öffnen.
Hier ein grundlegendes Beispiel:
from PIL import Image
# Bilddatei laden
img = Image.open('sample.jpg')
# Bildinformationen anzeigen
print(img.format) # Format (z.B. JPEG, PNG)
print(img.size) # Größe (Breite, Höhe)
print(img.mode) # Farbmodus (z.B. RGB, L)
Dieser Code öffnet eine Bilddatei und gibt das Format, die Größe und den Farbmodus aus. Sie müssen lediglich den Dateipfad angeben – das ist sehr praktisch.
3.2 Bilder anzeigen
Nachdem Sie ein Bild geladen haben, können Sie es mit der Methode show()
im Standardbildbetrachter Ihres Systems anzeigen.
So funktioniert das:
from PIL import Image
# Bild laden
img = Image.open('sample.jpg')
# Bild anzeigen
img.show()
Das angegebene Bild wird im Standard-Bildbetrachter geöffnet. So können Sie das Bild überprüfen und anschließend weitere Verarbeitungsschritte durchführen.
3.3 Abrufen von Bilddetails
Mit Pillow können Sie verschiedene Informationen über das Bild abrufen. Beispielsweise können Sie die Breite und Höhe über das Attribut size
sowie den Farbmodus über mode
abfragen.
So erhalten Sie die wichtigsten Bildinformationen:
from PIL import Image
# Bild laden
img = Image.open('sample.jpg')
# Bilddetails ausgeben
print(f'Bildgröße: {img.size}') # (Breite, Höhe)
print(f'Format: {img.format}') # Bildformat (JPEG, PNG usw.)
print(f'Farbmodus: {img.mode}') # Farbmodus (RGB, L usw.)
So können Sie grundlegende Informationen für die weitere Verarbeitung nutzen, z.B. zum Anpassen der Größe oder zum Zuschneiden.
3.4 Von Pillow unterstützte Bildformate
Pillow unterstützt zahlreiche Bildformate, darunter:
- JPEG
- PNG
- GIF
- BMP
- TIFF
Somit können Sie mit Pillow nahezu alle gängigen Bildformate laden und bearbeiten. Beispielsweise ist das flexible Verarbeiten von Nutzeruploads in Webanwendungen möglich, ohne sich um das Format sorgen zu müssen.
4. Grundlegende Bildbearbeitung
4.1 Bildgröße ändern (Resizing)
Das Ändern der Bildgröße gehört zu den grundlegenden Operationen. Es wird genutzt, um Bilder für Webseiten oder Anwendungen auf eine passende Größe zu bringen. Mit resize()
lässt sich die Bildgröße einfach anpassen.
Beispiel für das Resizing:
from PIL import Image
# Bild laden
img = Image.open('sample.jpg')
# Bild auf 400x300 Pixel skalieren
resized_img = img.resize((400, 300))
# Skaliertes Bild speichern
resized_img.save('resized_sample.jpg')
Das Bild wird eingelesen, auf die neue Größe (400×300 Pixel) gebracht und gespeichert. So können Sie Bilder in der gewünschten Größe ausgeben.
4.2 Zuschneiden von Bildern (Cropping)
Das Zuschneiden ermöglicht es, einen bestimmten Bereich eines Bildes zu extrahieren. Das ist nützlich, wenn Sie nur einen Teil des Bildes verwenden möchten. Mit crop()
können Sie einen bestimmten Bereich ausschneiden.
Beispiel für Cropping:
from PIL import Image
# Bild laden
img = Image.open('sample.jpg')
# Bild zuschneiden (von (100, 100) bis (300, 300))
cropped_img = img.crop((100, 100, 300, 300))
# Ausgeschnittenes Bild speichern
cropped_img.save('cropped_sample.jpg')
Hier wird ein bestimmter Bereich ausgewählt und gespeichert.
4.3 Bild drehen
Das Drehen eines Bildes ist mit der Methode rotate()
sehr einfach. Mit expand=True
stellen Sie sicher, dass nach dem Drehen das gesamte Bild sichtbar bleibt.
Beispiel: Bild um 45 Grad drehen:
from PIL import Image
# Bild laden
img = Image.open('sample.jpg')
# Bild um 45 Grad drehen (und Größe anpassen)
rotated_img = img.rotate(45, expand=True)
# Gedrehtes Bild speichern
rotated_img.save('rotated_sample.jpg')
Mit expand=True
bleibt das Bild nach der Drehung vollständig sichtbar.
4.4 Bild spiegeln (Flip)
Auch das Spiegeln eines Bildes (horizontal oder vertikal) ist mit Pillow einfach. Für horizontales Spiegeln (Flip Left-Right) nutzen Sie transpose()
.
Beispiel für das horizontale Spiegeln:
from PIL import Image
# Bild laden
img = Image.open('sample.jpg')
# Bild horizontal spiegeln
flipped_img = img.transpose(Image.FLIP_LEFT_RIGHT)
# Gespiegeltes Bild speichern
flipped_img.save('flipped_sample.jpg')
Das Bild wird horizontal gespiegelt und gespeichert.
4.5 Weitere grundlegende Bildoperationen mit Pillow
Neben Größenänderung, Zuschneiden, Drehen und Spiegeln bietet Pillow zahlreiche weitere Funktionen, z.B. zur Helligkeits- und Kontrastanpassung oder Farbkonvertierung. Damit können auch komplexe Bildbearbeitungen automatisiert werden.

5. Bildformat-Konvertierung und Speicherung
5.1 Bildformat konvertieren
Mit Pillow können Sie das Format eines Bildes einfach konvertieren, z.B. von JPEG zu PNG. Sie lesen das Bild ein und speichern es im gewünschten Format.
Beispiel für eine Formatkonvertierung:
from PIL import Image
# JPEG-Bild laden
img = Image.open('sample.jpg')
# Als PNG speichern
img.save('converted_image.png', 'PNG')
So können Sie Bilder einfach zwischen verschiedenen Formaten umwandeln.
5.2 Bilder speichern
Beim Speichern von Bildern mit Pillow gibt es verschiedene Optionen, z.B. Qualitäts- und Optimierungseinstellungen für JPEG oder Progressive JPEG.
Beispiel für das Speichern mit Optionen:
from PIL import Image
# Bild laden
img = Image.open('sample.jpg')
# Als JPEG mit Qualität 95 und Optimierung speichern
img.save('optimized_image.jpg', 'JPEG', quality=95, optimize=True)
Mit quality
bestimmen Sie die Qualität (0–100), optimize
sorgt für minimale Dateigröße.
5.3 Progressive JPEG speichern
Progressive JPEG-Bilder werden beim Laden schrittweise von niedriger zu hoher Qualität angezeigt – ideal für das Web.
Speichern als Progressive JPEG:
from PIL import Image
# Bild laden
img = Image.open('sample.jpg')
# Als Progressive JPEG speichern
img.save('progressive_image.jpg', 'JPEG', quality=85, progressive=True)
So wird das Bild beim Laden in mehreren Stufen angezeigt.
5.4 EXIF-Informationen beibehalten
EXIF (Exchangeable Image File Format) enthält Metadaten wie Aufnahmezeitpunkt oder Kameraeinstellungen. Pillow kann EXIF-Daten beim Speichern erhalten.
Beispiel:
from PIL import Image
# Bild laden
img = Image.open('sample.jpg')
# EXIF-Daten abrufen
exif_data = img.info.get('exif')
# Mit EXIF speichern
img.save('exif_image.jpg', 'JPEG', exif=exif_data)
So bleiben alle Metadaten beim Speichern erhalten.
6. Filter und Effekte anwenden
6.1 Helligkeit und Kontrast anpassen
Mit Pillow können Sie die Helligkeit und den Kontrast von Bildern einfach anpassen. Dafür nutzen Sie das ImageEnhance
-Modul.
Beispiel: Helligkeit erhöhen:
from PIL import Image, ImageEnhance
# Bild laden
img = Image.open('sample.jpg')
# Helligkeit um 1.5 erhöhen
enhancer = ImageEnhance.Brightness(img)
bright_img = enhancer.enhance(1.5)
# Ergebnis speichern
bright_img.save('bright_sample.jpg')
Mit enhance()
legen Sie den Faktor fest (1.0 = Originalhelligkeit, <1.0 dunkler, >1.0 heller).
Kontrast erhöhen:
from PIL import Image, ImageEnhance
# Bild laden
img = Image.open('sample.jpg')
# Kontrast um 2.0 erhöhen
enhancer = ImageEnhance.Contrast(img)
contrast_img = enhancer.enhance(2.0)
# Ergebnis speichern
contrast_img.save('contrast_sample.jpg')
So wird der Kontrast verstärkt und das Bild wirkt klarer.
6.2 Filter wie Weichzeichnen oder Schärfen
Mit Pillow können Sie Filter wie Weichzeichnen (Blur) oder Schärfen anwenden. Dazu wird das ImageFilter
-Modul verwendet.
Beispiel: Bild weichzeichnen:
from PIL import Image, ImageFilter
# Bild laden
img = Image.open('sample.jpg')
# Weichzeichner anwenden
blurred_img = img.filter(ImageFilter.BLUR)
# Ergebnis speichern
blurred_img.save('blurred_sample.jpg')
Zum Schärfen verwenden Sie ImageFilter.SHARPEN
:
# Schärfefilter anwenden
sharpened_img = img.filter(ImageFilter.SHARPEN)
# Ergebnis speichern
sharpened_img.save('sharpened_sample.jpg')
So können Sie Kanten betonen oder das Bild weicher machen.
6.3 Spezielle Filter verwenden
Pillow bietet auch spezielle Filter, z.B. für Kantenerkennung (Edge Detection) oder Kontur-Extraktion – hilfreich für Bildanalyse und Design.
Beispiel: Kantenerkennung:
from PIL import Image, ImageFilter
# Bild laden
img = Image.open('sample.jpg')
# Kantenerkennung anwenden
edge_img = img.filter(ImageFilter.FIND_EDGES)
# Ergebnis speichern
edge_img.save('edge_sample.jpg')
So werden nur die Kanten hervorgehoben.

7. Text und Formen zeichnen
7.1 Text mit Pillow einfügen
Das Hinzufügen von Text zu Bildern ist eine wichtige Funktion von Pillow – z.B. für Banner, Thumbnails oder Logos. Mit ImageDraw
können Sie beliebig Text auf einem Bild platzieren.
Beispiel für die Textausgabe:
from PIL import Image, ImageDraw, ImageFont
# Bild laden
img = Image.open('sample.jpg')
# ImageDraw-Objekt erstellen
draw = ImageDraw.Draw(img)
# Text ausgeben
draw.text((10, 10), 'Hello, Pillow!', fill=(255, 255, 255))
# Bild speichern
img.save('text_sample.jpg')
Mit fill
legen Sie die Textfarbe (hier weiß: (255, 255, 255)
) fest.
7.2 Schriftarten festlegen
Standardmäßig verwendet Pillow die Systemschriftart, aber mit ImageFont
können Sie eigene Schriften und Größen festlegen.
Beispiel:
from PIL import Image, ImageDraw, ImageFont
# Bild laden
img = Image.open('sample.jpg')
# ImageDraw-Objekt erstellen
draw = ImageDraw.Draw(img)
# Schriftart festlegen (TrueType)
font = ImageFont.truetype('arial.ttf', 40)
# Text ausgeben
draw.text((10, 10), 'Custom Font!', font=font, fill=(255, 255, 255))
# Bild speichern
img.save('font_sample.jpg')
Sie können eine beliebige TTF-Datei und die gewünschte Schriftgröße angeben.
7.3 Formen zeichnen
Neben Text können Sie auch Linien, Rechtecke, Kreise usw. mit ImageDraw
zeichnen. Nutzen Sie dazu die Methoden line()
, rectangle()
und ellipse()
.
Beispiel:
from PIL import Image, ImageDraw
# Bild laden
img = Image.open('sample.jpg')
# ImageDraw-Objekt erstellen
draw = ImageDraw.Draw(img)
# Linie zeichnen
draw.line((0, 0, 100, 100), fill=(255, 0, 0), width=5)
# Rechteck zeichnen
draw.rectangle((50, 50, 150, 150), outline=(0, 255, 0), width=3)
# Kreis (Ellipse) zeichnen
draw.ellipse((200, 200, 300, 300), outline=(0, 0, 255), width=3)
# Bild speichern
img.save('shape_sample.jpg')
Mit outline
legen Sie die Farbe der Form, mit width
die Strichstärke fest.
7.4 Komplexe Zeichnungen
Durch das Kombinieren mehrerer Formen und Texte können Sie komplexe Designs erstellen – zum Beispiel Thumbnails mit Überschrift, Banner mit mehreren Elementen usw. So lässt sich das visuelle Design Ihrer Website oder App flexibel gestalten.
8. Fortgeschrittene Techniken: Bildkomposition und Maskierung
8.1 Bilder kombinieren
Das Kombinieren (Compositing) mehrerer Bilder ist mit Pillow einfach. Beispielsweise können Sie ein Overlay auf ein Hintergrundbild legen. Die Methode paste()
wird dafür verwendet.
Beispiel:
from PIL import Image
# Hintergrund- und Overlay-Bild laden
background = Image.open('background.jpg')
overlay = Image.open('overlay.png')
# Overlay bei x=100, y=100 einfügen (mit Alphakanal)
background.paste(overlay, (100, 100), overlay)
# Ergebnis speichern
background.save('combined_image.jpg')
So können Sie etwa transparente PNGs sauber auf Hintergrundbilder legen.
8.2 Ausschneiden mit Maskenbildern
Mit einer Maske können Sie Bilder in spezielle Formen (z.B. rund, sternförmig) zuschneiden. Die Kombination aus paste()
und Maskenbild ermöglicht dies.
Beispiel: Bild kreisförmig ausschneiden:
from PIL import Image, ImageDraw
# Bild laden
img = Image.open('sample.jpg')
# Kreisförmige Maske erstellen
mask = Image.new('L', img.size, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((100, 100, 300, 300), fill=255)
# Mit Maske auf neues Bild kopieren
result = Image.new('RGB', img.size)
result.paste(img, (0, 0), mask)
# Ergebnis speichern
result.save('masked_image.jpg')
Der weiße Bereich der Maske bleibt sichtbar, der schwarze wird transparent.
8.3 Transparente Bilder mit Alphakanal erstellen
Mit dem Alphakanal können Sie die Transparenz eines Bildes steuern. putalpha()
fügt oder verändert den Alphakanal.
Beispiel für halbtransparentes PNG:
from PIL import Image
# Bild laden und in RGBA konvertieren
img = Image.open('sample.jpg').convert('RGBA')
# Alphakanal extrahieren und auf 50% Transparenz setzen
alpha = img.split()[3]
alpha = alpha.point(lambda p: p * 0.5)
img.putalpha(alpha)
# Bild speichern
img.save('transparent_image.png')
So erhalten Sie transparente PNG-Bilder.
8.4 Mögliche Anwendungen
Diese Techniken ermöglichen es, Bildbearbeitung und Komposition zu automatisieren, Banner oder Logos effizient zu erstellen oder bestimmte Bereiche hervorzuheben. Mit Pillow lassen sich kreative, projektbezogene Visualisierungen schnell umsetzen.

9. Fazit
In diesem Artikel wurden verschiedene Bildverarbeitungstechniken mit der Python-Bibliothek Pillow ausführlich vorgestellt. Mit Pillow lassen sich grundlegende Bildoperationen wie Laden, Speichern, Skalieren und Zuschneiden ebenso leicht durchführen wie fortgeschrittene Operationen wie Komposition, Filteranwendung sowie das Zeichnen von Text und Formen.
9.1 Zusammenfassung der Grundfunktionen
Wir haben mit der Installation von Pillow begonnen, das Öffnen und Anzeigen von Bildern sowie das Auslesen von Bildinformationen behandelt. Damit sind Sie in der Lage, Bilder flexibel zu bearbeiten.
9.2 Grundlegende Bearbeitungen wie Skalierung, Zuschneiden und Drehen
Mit Funktionen wie Skalieren, Zuschneiden und Drehen können Sie Größe und Form von Bildern beliebig anpassen, bestimmte Bereiche ausschneiden oder Ausrichtung ändern – nützlich in Webdesign und App-Entwicklung.
9.3 Anwenden von Filtern und Effekten
Mit Pillow können Sie Helligkeit, Kontrast und verschiedene Filter wie Weichzeichnen oder Schärfen sowie Edge Detection einfach anwenden. Damit lassen sich Bilder wirkungsvoll aufbereiten und professionell gestalten.
9.4 Zeichnen von Text, Formen und Bildkomposition
Durch das Hinzufügen von Text und Formen sowie das Kombinieren mehrerer Bilder sind noch komplexere Designs möglich – etwa Banner, Logos oder transparente PNGs. Insbesondere Maskierung und Alphakanal sind sehr praktisch im Web- und App-Design.
9.5 Ausblick für die weitere Nutzung
Die Funktionen von Pillow sind sehr umfangreich. Mit der offiziellen Dokumentation und weiteren Ressourcen können Sie Ihr Wissen vertiefen. Ob für automatisierte Bildverarbeitung in Webanwendungen, für Bildanalyse in Data Science oder für Preprocessing in Machine Learning – Pillow ist ein vielseitiges Tool.
Nutzen Sie dieses Wissen, um Pillow künftig effektiv in Ihren eigenen Projekten einzusetzen und Bildbearbeitung effizient zu gestalten.