Pillow ist die Essential Python Imaging Library
Pillow ist der moderne, aktiv gepflegte Zweig der Python Imaging Library (PIL). Seine Hauptfunktion besteht darin, robuste und effiziente Bildverarbeitungsfunktionen direkt in Python-Skripten bereitzustellen. Sie können Dutzende Bilddateien öffnen, bearbeiten, filtern, verbessern und speichern, ohne auf externe Editoderen angewiesen zu sein. Zum Beispiel, Die Konvertierung von 100 JPEG-Bildern in PNG und deren Größenänderung auf 50 % dauert weniger als 2 Sekunden mit optimierten Kissenoperationen.
Wenn Sie Stapelvorgänge ausführen, Wasserzeichen hinzufügen, Metadaten extrahieren oder Miniaturansichten programmgesteuert erstellen müssen, ist Pillow die direkte Antwort. Über 70 % der Python-basierten Bildverarbeitungsautomatisierungsaufgaben verwenden Pillow als Kernbibliothek , laut PyPI-Downloadstatistik.
Um Pillow effektiv nutzen zu können, müssen Sie seinen Kernarbeitsablauf verstehen: Öffnen → Verarbeiten → Speichern. Anschließend finden Sie eine praktische Implementierung mit echten Codebeispielen.
Lauf pip install Pillow . Überprüfen Sie mit python -c „aus PIL-Importbild; print(Image.__version__)“ . Die typische Installation dauert weniger als 30 Sekunden über eine Stundard-Breitbundverbindung.
img = Image.open("input.jpg").convert("RGB") – unerlässlich für die Konsistenz. img.thumbnail((800, 800)) – behält das Verhältnis bei, keine Verzerrung. für Datei in os.listdir("Ordner"): img.save("output.png", optimieren=True, Qualität=85) – Reduziert die Dateigröße um bis zu 40 % ohne sichtbaren Qualitätsverlust. Das folgende Skript verarbeitet alle JPEGs in einem Verzeichnis und erstellt Miniaturansichten mit 256 x 256 Pixeln unter Beibehaltung der Metadaten. Im Vergleich zu sequentiellen, nicht optimierten Schleifen wird die Gesamtverarbeitungszeit um 65 % reduziert durch den Einsatz von In-Place-Operationen.
from PIL import ImageBetriebssystem importierenfür Dateinamen in os.listdir("originals"): if filename.endswith(".jpg"): img = Image.open(os.path.join("Originale", Dateiname)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") Kissen bietet über 50 integrierte Funktionen in 8 Hauptkategorien. Nachfolgend finden Sie eine strukturierte Tabelle mit den Hauptfunktionen, typischen Anwendungsfällen und realen Leistungsmetriken.
| Funktionskategorie | Schlüsselmethoden | Typische Verwendung | Durchschn. Zeit (ms) |
|---|---|---|---|
| Formatkonvertierung | .save(, format=) | PNG ↔ JPEG ↔ BMP | 12–35 |
| Geometrische Transformationen | .resize(), .rotate(), .crop() | Miniaturansichten, Ausrichtung | 8–45 |
| Farboperationen | .convert(), .point() | Graustufen, Helligkeit | 3–10 |
| Filterung und Verbesserung | ImageFilter, ImageEnhance | Unschärfe, Schärfe, Kontrast | 15–60 |
| Zeichnung & Text | ImageDraw.Draw() | Wasserzeichen, Anmerkungen | 20–80 |
Pillow reduziert die Länge des Bildverarbeitungscodes im Vergleich zu nativen Python-Lösungen um durchschnittlich 73 % (z. B. manuelle Pixeliteration). Das Anwenden einer Gaußschen Unschärfe mit nativem Python erfordert beispielsweise etwa 15 Zeilen verschachtelter Schleifen. mit Pillow ist es img.filter(ImageFilter.GaussianBlur(radius=2)) – eine Zeile.
Basierend auf Community-Foren und GitHub-Problemen sind die sechs am häufigsten gestellten Fragen zu Pillow mit direkten, umsetzbaren Antworten.
Ja. Benutzen Image.open("animated.gif") und durch Frames iterieren mit suchen() . Pillow kann animierte GIFs lesen und schreiben und dabei Zeitdaten mit einer Genauigkeit von bis zu 1 ms einhalten. Beispiel: Extrahieren Sie alle Frames, um Bilder in weniger als 0,5 Sekunden für ein GIF mit 20 Frames zu trennen.
Benutzen Image.open().convert() und portionsweise mit verarbeiten .crop() . Für ein 100-Megapixel-Bild benötigt Pillows Lazy Loading zunächst nur 5–10 MB Anstatt das gesamte Bild zu laden. Geben Sie zusätzlich an Bild.LANCZOS für hochwertiges Downsampling, das speichereffizient ist.
Pillow unterstützt nativ über 30 Formate, darunter JPEG, PNG, TIFF, BMP, GIF, WebP und ICO. Durch die WebP-Unterstützung in Pillow wird bei gleicher Qualität eine um 25–35 % bessere Komprimierung als bei JPEG erzielt (basierend auf Googles WebP-Studien). So überprüfen Sie alle unterstützten Formate: von PIL-Importfunktionen; Features.get_supported() .
Für grundlegende E/A und einfache Transformationen (Größe ändern, Zuschneiden, Formatkonvertierung) Pillow ist auf derselben Hardware 15–30 % schneller als OpenCV weil es einen geringeren Overhead hat. Für komplexe Computer Vision (Merkmals, Matching) ist OpenCV überlegen. Wählen Sie immer Pillow für die Automatisierung der Stapelbildverarbeitung.
Benutzen Image.alpha_composite() or .paste() mit transparenter Auflage. Ein Stapel von 1000 Bildern (jeweils 2 MB) kann in ca. 45 Sekunden mit einem Wasserzeichen versehen werden mit einer einfachen for-Schleife und den Zeichenmethoden von Pillow. Die Struktur finden Sie im Codebeispiel im Abschnitt „Verwendung“.
Ja. Konvertieren zwischen Pillow- und NumPy-Arrays: np.array(img) and Image.fromarray(arr) . Diese Integration wird in 85 % der datenwissenschaftlichen Bildpipelines verwendet (Kaggle-Umfragen, 2024). Es ermöglicht eine nahtlose Kombination der I/O-Geschwindigkeit von Pillow mit den mathematischen Operationen von NumPy.
Um die Effizienz von Pillow zu maximieren, befolgen Sie diese evidenzbasierten Richtlinien:
Zusammenfassend: Pillow ist die ultimative Lösung für die Python-Bildverarbeitung für Aufgaben, die keine Echtzeit-Video- oder 3D-Transformationen erfordern. Seine Kombination aus Geschwindigkeit (~0,2 Sekunden pro 12-Megapixel-Bild für grundlegende Vorgänge), Formatunterstützung (30 Typen) und sauberer API macht es zum Industriestandard für Automatisierungsskripte, Web-Backends und Datenvorbereitungspipelines.