Python-Kissen - Arbeiten mit Bildern
In diesem Kapitel werden Themen behandelt, darunter das Lesen und Speichern eines Bildes in Pillow.
Ein Bild lesen
Das Lesen und Schreiben von Bildern mithilfe der Kissenbibliothek ist mit Hilfe von sehr einfach PIL.Image module function.
Syntax
Image.open(fp, mode=’r’)
Wo
fp- Ein Dateiname (Zeichenfolge), ein pathlib.Path-Objekt oder ein Dateiobjekt. Das Dateiobjekt muss die Methoden read (), seek () und tell () implementieren und im Binärmodus geöffnet werden.
mode - Es ist ein optionales Argument, falls angegeben, muss 'r' sein.
Return value - Ein Bildobjekt.
Error - Wenn die Datei nicht gefunden werden kann oder das Bild nicht geöffnet und identifiziert werden kann.
Beispiel
Das Folgende ist ein sehr einfaches Beispiel, in dem wir ein Bild eines beliebigen Formats öffnen (das wir verwenden).jpg), zeigen Sie es in einem Fenster an und speichern Sie es dann (Standardspeicherort) in einem anderen Dateiformat (.png).
from PIL import Image
image = Image.open('beach1.jpg')
image.show()
image.save('beach1.bmp')
image1 = Image.open('beach1.bmp')
image1.show()
Im obigen Beispiel importieren wir das Image-Modul aus der PIL-Bibliothek und rufen dann das auf Image.open()Funktion zum Lesen eines Bildes von der Festplatte, die einen Bildobjektdatentyp zurückgibt. Der Dateityp wird automatisch anhand des Dateiinhalts ermittelt. Zum Lesen dieopen() Funktion akzeptiert a filename(string), ein path object oder ein image(file) Objekt.
Mit der open () -Funktion lesen wir also tatsächlich das Bild. Image.open () liest das Bild und erhält alle relevanten Informationen aus dem Bild.
Ausgabe
Wenn Sie das obige Programm als Example.py speichern und ausführen, werden die Originalbilder (.jpg) und erneut gespeicherten Bilder (.bmp) mit dem Standard-PNG-Anzeigeprogramm wie folgt angezeigt:
Actual image
Resaved image (.bmp)
Speichern eines Bildes
Die Funktion save () schreibt ein Bild in eine Datei. Wie beim Lesen (Funktion open ()) akzeptiert die Funktion save () einen Dateinamen, ein Pfadobjekt oder ein Dateiobjekt, das zum Schreiben geöffnet wurde.
Syntax
Image.save(fp, format=None, **params)
Wo,
fp - Ein Dateiname (Zeichenfolge), ein pathlib.Path-Objekt oder ein Dateiobjekt.
format- Optionale Formatüberschreibung. Wenn nicht angegeben, wird das zu verwendende Format aus der Dateinamenerweiterung bestimmt. Wenn ein Dateiobjekt anstelle eines Dateinamens verwendet wurde, sollte dieser Parameter immer verwendet werden.
options - Zusätzliche Parameter für den Bildschreiber.
Return value - Keine
KeyError - Wenn das Ausgabeformat nicht aus dem Dateinamen ermittelt werden konnte, verwenden Sie die Formatoption, um dies zu beheben.
IOError - Wenn die Datei nicht geschrieben werden konnte, wurde sie möglicherweise erstellt und enthält möglicherweise Teildaten.
Kurz gesagt, die obige Syntax speichert das Bild unter dem angegebenen Dateinamen. Wenn kein Format angegeben ist, basiert es auf der aktuellen Dateinamenerweiterung. Um dem Verfasser die zusätzlichen Anweisungen bereitzustellen, verwenden wir Schlüsselwortoptionen.
image.save('beach1.bmp')
Im obigen Beispiel wird die Datei basierend auf der Dateierweiterung gespeichert, um beispielsweise den Bildtyp zu bestimmen. Mit dem obigen Beispiel wird eine BMP-Datei in unserem aktuellen Arbeitsverzeichnis erstellt.
Sie können den Dateityp auch explizit als zweiten Parameter angeben -
image.save('beach1.gif', 'GIF')