Python Imaging Library (Erweiterung von PIL) ist das De-facto-Bildverarbeitungspaket für die Python-Sprache. Es enthält leichte Bildverarbeitungswerkzeuge, die beim Bearbeiten, Erstellen und Speichern von Bildern helfen. Die Unterstützung für die Python Imaging Library wurde 2011 eingestellt, aber ein Projekt namens pillow gabelte das ursprüngliche PIL-Projekt und fügte Python3.x-Unterstützung hinzu. Pillow wurde als Ersatz für PIL für die zukünftige Verwendung angekündigt. Pillow unterstützt eine große Anzahl von Bilddateiformaten, einschließlich BMP, PNG, JPEG und TIFF. Die Bibliothek unterstützt das Hinzufügen von Unterstützung für neuere Formate in der Bibliothek, indem neue Dateidecoder erstellt werden.

Dieses Modul ist nicht mit Python vorinstalliert. Um es zu installieren, führen Sie den folgenden Befehl in der Befehlszeile aus:

Pip Install pillow

Hinweis: In einigen Linux-Distributionen sind Python und PIL vorinstalliert.

Beginnend mit pillow

  1. Öffnen eines Bildes mit open(): Die Klasse PIL.Image.Image repräsentiert das Bildobjekt. Diese Klasse stellt die open() -Methode bereit, mit der das Bild geöffnet wird.

    Beispiel: Nehmen wir an, das Bild ist:



    filter_none

    bearbeiten
    schließen

    play_arrow

    Link
    Helligkeit_4
    Code

    from PIL import Image
      
      
    img = Image.open(r"test.png")   
    chevron_right
    
    
    filter_none
    
    

    Hinweis: Die Position des Bildes sollte nur relativ sein, wenn sich das Bild im selben Verzeichnis wie das Python-Programm befindet. Andernfalls sollte ein absoluter (vollständiger) Pfad des Bildes angegeben werden.

  2. Anzeigen des Bildes mit show(): Mit dieser Methode wird das Bild angezeigt. Zum Anzeigen des Bildes Pillow konvertiert das Bild zunächst in ein .pngFormat (unter Windows), speichert es in einem temporären Puffer und zeigt es dann an. Daher kann aufgrund der Konvertierung des Bildformats in .pngeinige Eigenschaften des ursprünglichen Bilddateiformats verloren gehen (z. B. Animation). Daher wird empfohlen, diese Methode nur zu Testzwecken zu verwenden.
    filter_none

    bearbeiten
    schließen

    play_arrow

    Link
    Helligkeit_4
    Code

    from PIL import Image
      
      
    img = Image.open(r"test.png")
    img.show()
    chevron_right
    
    
    filter_none
    
    

    Ausgabe:

    Python-Pil-1

  3. Informationen zum geöffneten Bild abrufen

    A) Abrufen des Modus (Farbmodus) des Bildes: Das Modusattribut des Bildes gibt den Typ und die Tiefe des Pixels im Bild an. Ein 1-Bit-Pixel hat einen Bereich von 0-1 und ein 8-Bit-Pixel hat einen Bereich von 0-255. Dieses Modul bietet verschiedene Modi. Nur wenige von ihnen sind:

    Modus Beschreibung
    1 1-Bit-Pixel, Schwarzweiß
    L. 8-Bit-Pixel, Graustufen
    P. 8-Bit-Pixel, die mithilfe einer Farbpalette einem anderen Modus zugeordnet werden
    RGB 3 × 8-Bit-Pixel, echte Farbe
    RGBA 4 × 8-Bit-Pixel, Echtfarbe mit Transparenzmaske

    Beispiel:

    filter_none

    bearbeiten
    schließen

    play_arrow

    Link
    Helligkeit_4
    Code

    from PIL import Image
      
      
    img = Image.open(r"test.png")
    print(img.mode)
    chevron_right
    
    
    filter_none
    
    

    Ausgabe:

    RGBA
    

    Note:Informationen zu den Modi finden Sie in der Dokumentation .

    B) Abrufen der Bildgröße: Dieses Attribut gibt die Größe des Bildes an. Es wird ein Tupel zurückgegeben, das Breite und Höhe enthält.



    Beispiel:

    filter_none

    bearbeiten
    schließen

    play_arrow

    Link
    Helligkeit_4
    Code

    from PIL import Image
      
      
    img = Image.open(r"test.png")
    print(img.size)
    chevron_right
    
    
    filter_none
    
    

    Ausgabe:

    (180, 263)
    

    C) Abrufen des Bildformats: Diese Methode gibt das Format der Bilddatei zurück.

    filter_none

    bearbeiten
    schließen

    play_arrow

    Link
    Helligkeit_4
    Code

    from PIL import Image
      
      
    img = Image.open(r"test.png")
    print(img.format)
    chevron_right
    
    
    filter_none
    
    

    Ausgabe:

    PNG
    
  4. Drehen eines Bildes mit drehen(): Nach dem Drehen des Bildes werden die Bildabschnitte ohne Pixelwerte mit Schwarz (für Nicht-Alpha-Bilder) und mit vollständig transparenten Pixeln (für Bilder, die Transparenz unterstützen) gefüllt.

    Beispiel:

    filter_none

    bearbeiten
    schließen

    play_arrow

    Link
    Helligkeit_4
    Code

    from PIL import Image
      
      
    angle = 40
    img = Image.open(r"test.png")
    r_img = img.rotate(angle)
    chevron_right
    
    
    filter_none
    
    

    Ausgabe:

    Python-Pil-2

  5. Ändern der Bildgröße mit resize(): Interpolation erfolgt während des Größenänderungsprozesses. Dadurch ändert sich die Bildqualität, unabhängig davon, ob das Bild vergrößert (auf eine höhere Dimension als das Original verkleinert) oder verkleinert (auf ein niedrigeres Bild als das Original verkleinert) wird. Daher sollte resize() mit Vorsicht verwendet werden und gleichzeitig einen geeigneten Wert für das Resampling-Argument bereitstellen.

    Beispiel:

    filter_none

    bearbeiten
    schließen

    play_arrow

    Link
    Helligkeit_4
    Code

    from PIL import Image
      
      
    size = (40, 40)
    img = Image.open(r"test.png")
    r_img = img.resize(size)
      
    r_img.show()
    chevron_right
    
    
    filter_none
    
    

    Ausgabe:

    Python-Pil-3

  6. Speichern eines Bildes mit save(): Bei Verwendung der save() -Methode muss Destination_path auch den Dateinamen und die Erweiterung des Bildes haben. Die Erweiterung kann in Destination_path weggelassen werden, wenn die Erweiterung im Formatargument angegeben wird.
    filter_none

    bearbeiten
    schließen

    play_arrow

    Link
    Helligkeit_4
    Code

    from PIL import Image
      
      
    size = (40, 40)
    img = Image.open(r"test.png")
    r_img = img.resize(size, resample = Image.BILINEAR)
      
    r_img.save("resized_test.png"
      
    img = Image.open(r"resized_test.png")
    print(img.size)
    chevron_right
    
    
    filter_none
    
    

    Ausgabe:

    (40, 40)