1. Bestimmung des Bildformats
Unterstützte Bildformate
Pillow unterstützt viele Bildformate, darunter:
- JPEG (JPG): Eines der beliebtesten Formate für Fotos. Komprimiert Bilder mit Qualitätsverlust, reduziert jedoch erheblich die Dateigröße. Unterstützt keine Transparenz.
- PNG: Verlustfreies Format, das Transparenz (Alpha-Kanal) unterstützt. Geeignet für Logos, Symbole und Bilder, bei denen Klarheit wichtig ist.
- BMP: Hochqualitatives Format ohne Kompression, aber mit großer Dateigröße. Unterstützt Transparenz.
- TIFF: Beliebt zur verlustfreien Speicherung von Bildern. Wird oft im Druckbereich verwendet.
- WEBP: Modernes Format mit hoher Komprimierung und Unterstützung von Transparenz. Geeignet für Webbilder, da es bei guter Qualität eine kleine Dateigröße bietet.
Bild hochladen für die Konvertierung
Bevor du ein Bild konvertierst, musst du es mit der Methode Image.open()
laden.
from PIL import Image
# Öffnen eines Bildes
image = Image.open("example.jpg")
print(image.format) # Originalformat des Bildes prüfen
2. Konvertierung eines Bildes in ein anderes Format
Die Methode save()
ermöglicht es, Bilder in verschiedenen Formaten zu speichern, indem einfach die Dateiendung geändert oder explizit das Format angegeben wird.
Konvertierung von JPEG nach PNG
Um ein Bild von JPEG in PNG zu konvertieren, gib beim Speichern einfach eine neue Endung an:
# Speichern eines Bildes im PNG-Format
image.save("example_converted.png")
Dieser Code konvertiert das Bild vom JPEG-Format ins PNG-Format und speichert es mit dem angegebenen Namen. PNG eignet sich hervorragend zur verlustfreien Speicherung und unterstützt transparente Bereiche.
Konvertierung von PNG nach JPEG
Auch die Konvertierung von PNG nach JPEG ist möglich, aber es ist wichtig zu beachten, dass JPEG keine Transparenz unterstützt. Transparente Bereiche werden beim Konvertieren mit Weiß gefüllt.
# Konvertierung von PNG nach JPEG (Transparenz wird durch weißen Hintergrund ersetzt)
image = image.convert("RGB") # Wechsel in den RGB-Modus, erforderlich für JPEG
image.save("example_converted.jpg", "JPEG")
Die Methode convert("RGB")
wird verwendet, um das Bild in den RGB-Modus zu konvertieren, da JPEG keine transparenten Bereiche unterstützt. Dies ist für das Speichern der Datei im JPEG-Format erforderlich.
3. Verwaltung der Bildqualität
Für die Optimierung von Bildern bietet Pillow die Parameter quality
und optimize
, mit denen sich Qualität und Dateigröße steuern lassen. Diese Parameter sind besonders nützlich für JPEG und PNG.
Optimierung und Qualitätssteuerung für JPEG
Beim Speichern eines Bildes im JPEG-Format reguliert der Parameter quality
den Komprimierungsgrad. Je höher der Qualitätswert, desto größer die Dateigröße und desto besser die Bildqualität. Der Wert quality
reicht von 1 bis 95 (Standard ist 75).
# Speichern eines JPEG-Bildes mit reduzierter Qualität
image.save("example_compressed.jpg", "JPEG", quality=85)
Dieser Code speichert das Bild mit einer Qualität von 85, was normalerweise gute Qualität bei reduzierter Dateigröße liefert. Für geringere Qualität, z. B. zum Erstellen von Thumbnails, kannst du quality = 50
angeben.
Optimierung für PNG
Für PNG führt der Parameter optimize = True
eine verlustfreie Komprimierung durch, bei der überflüssige Daten entfernt werden. Das ist besonders nützlich für die Veröffentlichung von Bildern im Internet.
# Speichern eines optimierten PNG-Bildes
image.save("example_optimized.png", "PNG", optimize=True)
Die Optimierung von PNG hilft, die Dateigröße ohne Qualitätsverlust zu reduzieren, was insbesondere für Logos und Symbole wichtig ist, bei denen jeder Kilobyte zählt.
Vergleich der JPEG-Qualität bei unterschiedlichem Komprimierungsgrad
Schauen wir uns an, wie sich der Parameter quality
auf die Dateigröße und die Bildqualität auswirkt.
# Speichern eines JPEG-Bildes mit unterschiedlicher Qualität
image.save("quality_95.jpg", "JPEG", quality=95)
image.save("quality_75.jpg", "JPEG", quality=75)
image.save("quality_50.jpg", "JPEG", quality=50)
In diesem Beispiel speichern wir dasselbe Bild mit drei Qualitätsstufen: 95, 75 und 50. Das Bild mit Qualität 95 wird nahezu identisch zum Original sein, aber mehr Speicherplatz benötigen, während Qualität 50 zu einer erheblichen Komprimierung und möglicherweise sichtbarem Detailverlust führt.
4. Verwendung des WebP-Formats
Das Format WebP ist ein modernes Format, das sowohl verlustbehaftete als auch verlustfreie Komprimierung sowie Transparenz unterstützt. Es ist aufgrund seiner hohen Komprimierungsrate im Internet weit verbreitet.
Konvertierung eines Bildes ins WebP-Format
# Konvertierung eines Bildes ins WebP-Format
image.save("example.webp", "WEBP", quality=80)
In diesem Beispiel speichern wir ein Bild im WebP-Format mit einer Qualität von 80. WebP erlaubt eine erheblich kleinere Dateigröße im Vergleich zu JPEG oder PNG bei vergleichbarer Qualität.
Beispiel für eine vollständige Konvertierung mit Optimierung
Kombinieren wir nun alle besprochenen Methoden und erstellen ein Skript zur Konvertierung eines Bildes in mehrere Formate mit Optimierung.
from PIL import Image
# Öffnen eines Bildes
image = Image.open("example.jpg")
# Konvertierung in PNG mit Optimierung
image.save("converted_optimized.png", "PNG", optimize=True)
# Konvertierung in JPEG mit reduzierter Qualität
image_rgb = image.convert("RGB") # Wechsel in den RGB-Modus für JPEG
image_rgb.save("converted_compressed.jpg", "JPEG", quality=85)
# Konvertierung in WebP mit Qualitätsoptimierung
image_rgb.save("converted_optimized.webp", "WEBP", quality=80)
In diesem Beispiel:
- Wir konvertieren das Bild in PNG mit Optimierung, was hilft, die Dateigröße ohne Verluste zu reduzieren.
- Speichern das Bild im JPEG-Format mit Qualität 85, was eine gute Qualität und kleine Dateigröße sichert.
- Konvertieren das Bild ins WebP-Format, das sich ideal für Veröffentlichungen im Internet eignet und hohe Qualität bei kleiner Dateigröße liefert.
GO TO FULL VERSION