1. Hochladen und Speichern von Bildern
Zum Hochladen von Bildern in Pillow wird die Klasse Image
verwendet.
Nach dem Hochladen können Bilder transformiert und in verschiedenen
Formaten gespeichert werden. Lass uns die grundlegenden Operationen des Hochladens und Speicherns von Bildern ansehen.
Bild hochladen
Verwende die Methode Image.open()
, um ein Bild hochzuladen.
Sie ermöglicht das Öffnen von Bildern in jedem unterstützten Format.
from PIL import Image
# Bild öffnen
image = Image.open("example.jpg")
# Dateiinformationen ausgeben
print(image.format) # Bildformat, z. B. JPEG oder PNG
print(image.size) # Bildabmessungen (Breite, Höhe)
print(image.mode) # Farbmodus, z. B. RGB oder Grayscale
Dieser Code lädt das Bild example.jpg
hoch und gibt seine
grundlegenden Eigenschaften aus: Format, Größe und Farbmodus. Befindet sich das Bild nicht im selben Ordner, gib den vollständigen Dateipfad an.
Bild speichern
Nach dem Hochladen und Ändern eines Bildes kannst du es in einem anderen
unterstützten Format speichern, indem du einfach die benötigte Dateierweiterung im Namen angibst. Die Methode
save()
ermöglicht es, den Namen und das Format der Ausgabedatei anzugeben.
# Bild in einem anderen Format speichern
image.save("example.png") # Speichert das Bild im PNG-Format
Du kannst auch die Qualität des gespeicherten Bildes anpassen, um die Dateigröße zu reduzieren. Das ist besonders nützlich für JPEG-Bilder.
# Speichern mit Qualitätsänderung
image.save("compressed_example.jpg", quality=85) # Der Wert für quality reicht von 1 bis 95
2. Größenänderung von Bildern
Die Größenänderung ist eine der häufigsten Aufgaben bei der Arbeit mit Bildern. Pillow bietet mehrere Möglichkeiten zur Größenänderung, einschließlich der Anpassung spezifischer Breiten- und Höhenparameter, proportionaler Anpassung und Erstellung von Thumbnails.
Größenänderung mit der Methode resize()
Mit der Methode resize()
kannst du die genauen Abmessungen des Bildes (Breite und Höhe) angeben. Dabei
kann das Bild verzerrt werden, wenn die neuen Dimensionen nicht den ursprünglichen Proportionen entsprechen.
# Neue Größe einstellen
new_size = (800, 600)
resized_image = image.resize(new_size)
# Das verkleinerte Bild speichern
resized_image.save("resized_example.jpg")
In diesem Beispiel wird das Bild auf eine Größe von 800x600 Pixel geändert und als neue Datei gespeichert. Wenn das Originalbild andere Proportionen hat, wird es gestreckt oder gestaucht, um den neuen Dimensionen zu entsprechen.
Proportionale Größenänderung mit thumbnail()
Um die Größe eines Bildes bei gleichzeitiger Beibehaltung seiner Proportionen zu ändern, verwende die Methode
thumbnail()
. Diese Methode verkleinert das Bild automatisch so, dass es den angegebenen Dimensionen entspricht, wobei die ursprünglichen Proportionen erhalten bleiben. Das ist besonders nützlich für die Erstellung von Vorschaubildern.
# Erstellung eines Thumbnails mit maximalen Größen von 400x400 Pixeln
image.thumbnail((400, 400))
# Thumbnail speichern
image.save("thumbnail_example.jpg")
Die Methode thumbnail()
ändert das Bild "in-place", was bedeutet, dass die Änderungen direkt am ursprünglichen image
-Objekt vorgenommen werden.
Nach dem Aufruf von thumbnail()
verkleinert Pillow das Bild so, dass seine Dimensionen 400x400 Pixel nicht überschreiten, wobei die Proportionen erhalten bleiben.
Skalierung unter Beibehaltung der Proportionen mit ImageOps.fit()
Manchmal ist es notwendig, die Größe eines Bildes so zu ändern, dass es genau den angegebenen Dimensionen entspricht, wobei jedoch die Proportionen erhalten bleiben, indem überflüssige Teile abgeschnitten werden. In
solchen Fällen kannst du die Methode ImageOps.fit()
verwenden.
from PIL import ImageOps
# Neue Größe einstellen
target_size = (400, 400)
fitted_image = ImageOps.fit(image, target_size, method=Image.LANCZOS)
# Das zugeschnittene Bild speichern
fitted_image.save("fitted_example.jpg")
Die Methode ImageOps.fit()
schneidet das Bild automatisch zu, damit
es den angegebenen Dimensionen ohne Verzerrungen entspricht. Wenn das Originalbild
beispielsweise rechteckig ist, schneidet die Methode die Ränder ab, damit es quadratisch wird und zu einer Größe von
400x400 Pixeln passt.
3. Beispiel für einen vollständigen Code
Nachfolgend findest du ein Beispiel für einen Code, der alle besprochenen Methoden zusammenfasst — vom Hochladen bis zur Größenänderung und Speicherung von Bildern.
from PIL import Image, ImageOps
# Bild hochladen
image = Image.open("example.jpg")
# Größenänderung ohne Beibehaltung der Proportionen
resized_image = image.resize((800, 600))
resized_image.save("resized_example.jpg")
# Proportionale Verkleinerung des Bildes
image.thumbnail((400, 400))
image.save("thumbnail_example.jpg")
# Skalierung und Zuschnitt auf die benötigte Größe
fitted_image = ImageOps.fit(image, (400, 400), method=Image.LANCZOS)
fitted_image.save("fitted_example.jpg")
Erklärungen zu den Methoden zur Größenänderung
-
resize()
: Ermöglicht die Angabe beliebiger Dimensionen, kann jedoch zu Verzerrungen führen, wenn die neuen Dimensionen nicht den Proportionen des Originals entsprechen. -
thumbnail()
: Ändert die Größe des Bildes und behält die Proportionen bei. Nützlich für die Erstellung von Vorschaubildern und die Verkleinerung großer Bilder. -
ImageOps.fit()
: Skaliert das Bild auf die angegebenen Dimensionen und schneidet die Ränder ab. Wird verwendet, wenn das Bild genau den Anforderungen entsprechen muss, ohne Verzerrungen.
4. Tipps:
Praktische Anwendung der Größenänderung von Bildern
- Optimierung von Bildern für Websites: Große Bilder können die Ladezeit der Seite verlangsamen. Daher ist es wichtig, sie zu optimieren, indem man die Größe ohne Qualitätsverlust reduziert.
-
Erstellung von Vorschaubildern für Galerien: Durch die Verwendung von
thumbnail()
kannst du schnell Vorschaubilder erstellen, die in der Vorschau angezeigt werden können. -
Anpassung von Bildern an bestimmte Größen: Wenn du ein Bild an eine feste Größe anpassen musst, z. B. für ein Profilbild
oder einen Avatar, ermöglicht die Methode
ImageOps.fit()
, das Bild zuzuschneiden und zu skalieren, damit es diesen Anforderungen entspricht.
Tipps zur Auswahl der Methoden
Verwende resize()
, wenn du die spezifische Breite und
Höhe des Bildes angeben möchtest und dir egal ist, wenn die Proportionen geändert werden.
Verwende thumbnail()
, wenn du Vorschaubilder erstellen oder ein Bild verkleinern möchtest, während die Proportionen erhalten bleiben.
Nutze ImageOps.fit()
, wenn du ein Bild mit bestimmten Dimensionen benötigst, ohne die Proportionen zu verzerren. Diese Methode schneidet
überflüssige Teile ab, was praktisch ist, wenn das Bild in einen Rahmen passen muss.
GO TO FULL VERSION