PNG-Komprimierung ist grundsätzlich verlustfrei
Dies ist das wichtigste Verständnis für PNG: Die Kompressionsstufe beeinflusst nicht die Qualität. Ein PNG, das mit Kompressionsstufe 1 gespeichert ist, und ein PNG, das mit Kompressionsstufe 9 gespeichert ist, erzeugen exakt das gleiche Bild beim Öffnen. Jedes Pixel ist identisch, Bit für Bit.
PNG verwendet den DEFLATE-Algorithmus (den gleichen, der hinter gzip und ZIP-Dateien steckt), um Pixeldaten zu komprimieren. Wenn Sie die Kompressionsstufe anpassen, steuern Sie, wie hart der Encoder nach wiederholten Mustern und optimalen Kodierungsstrategien sucht. Höhere Stufen bedeuten:
- Kleinere Dateien — der Encoder findet effizientere Wege, um die gleichen Daten darzustellen
- Langsamere Kodierung — mehr Berechnung erforderlich, um diese Effizienzen zu finden
- Identische Dekomprimierung — egal auf welcher Stufe, die dekodierten Pixel sind gleich
Dies ist grundlegend anders als JPEG, bei dem die Qualitätseinstellung direkt steuert, wie viele visuelle Daten dauerhaft verworfen werden. Bei PNG wird nichts jemals verworfen. Die Frage der „Qualität" ist einfach: Wie viel CPU-Zeit sind Sie bereit, aufzubringen, um ein paar Bytes mehr herauszuquetschen?
Schlüsselkonzept: PNG-Kompressionsstufe = Kodierungsaufwand, nicht Qualität. Stufe 9 bedeutet nicht „niedrigere Qualität" — es bedeutet „versuchen, eine kleinere Darstellung der gleichen Daten zu finden".
PNG-8 vs PNG-24 vs PNG-32
Der effektivste Weg, die PNG-Dateigröße zu reduzieren, ist die Wahl des richtigen PNG-Subtyps für Ihr Bild. Der Unterschied zwischen diesen Typen kann eine Größenreduktion von 3 bis 5x mit minimaler oder keiner sichtbaren Änderung bedeuten.
| Typ | Farbtiefe | Farben | Transparenz | Typische Größe |
|---|---|---|---|---|
| PNG-8 | 8-Bit (indizierte Palette) | Bis zu 256 | 1-Bit (ein/aus) oder 8-Bit Alpha | Kleinste |
| PNG-24 | 24-Bit (RGB) | 16,7 Millionen | Keine | Mittel |
| PNG-32 | 32-Bit (RGBA) | 16,7 Millionen | Vollständiges 8-Bit Alpha | Größte |
PNG-8: Die Geheimwaffe für kleine Dateien
PNG-8 speichert jeden Pixel als Index in eine Palette von bis zu 256 Farben. Anstatt 3 Bytes pro Pixel (RGB) oder 4 Bytes (RGBA) zu verwenden, verwendet es nur 1 Byte. Dieser grundlegende Unterschied macht PNG-8-Dateien 3 bis 5 mal kleiner als PNG-24-Äquivalente.
PNG-8 ist ideal für:
- Logos — die meisten Logos verwenden weniger als 20 Farben
- Symbole und UI-Elemente — flache Designsymbole haben typischerweise 5 bis 15 Farben
- Einfache Illustrationen — Diagramme, Diagramme, Infografiken mit flachen Farbflächen
- Screenshots von textreichen UIs — Terminal-Ausgaben, Code-Editoren, Textdokumente
PNG-8 ist nicht geeignet für:
- Fotografien — Fotos enthalten Tausende von Farben; Reduzieren auf 256 verursacht sichtbare Bänderung
- Sanfte Farbverlauf — 256 Farben können einen sanften Farbverlauf nicht ohne sichtbare Schritte darstellen
- Bilder, die Semi-Transparenz erfordern — Standard-PNG-8 unterstützt nur vollständig transparente oder vollständig opake Pixel (obwohl einige Tools 8-Bit Alpha im indizierten Modus unterstützen)
PNG-24 vs PNG-32: Benötigen Sie den Alpha-Kanal?
Der Unterschied zwischen PNG-24 und PNG-32 ist der Alpha-(Transparenz-)Kanal. Jedes Pixel in PNG-32 trägt ein zusätzliches Byte für Transparenz, das Dateien 25 bis 33% größer als PNG-24 macht. Wenn Ihr Bild keine Transparenz benötigt (keine transparenten oder semi-transparenten Bereiche), speichern Sie es als PNG-24, um den Overhead eines ungenutzten Alpha-Kanals zu vermeiden.
Schneller Gewinn: Wenn Sie ein PNG-24-Bild haben, das nur 50 unterschiedliche Farben verwendet (häufig bei UI-Mockups und Diagrammen), kann die Umwandlung in PNG-8 die Dateigröße um 70 bis 80% mit null sichtbarer Änderung reduzieren. Tools wie pngquant erkennen dies automatisch.
Metadaten-Stripping
PNG-Dateien können Metadaten in Text-Chunks enthalten: tEXt, iTXt, zTXt und andere Hilfschunks. Diese beinhalten:
- Software-Tags — welches Programm die Datei erstellt hat (Photoshop, GIMP, usw.)
- Erstellungszeitstempel — wann das Bild erstellt oder zuletzt geändert wurde
- Autor und Urheberrecht — eingebettete Textfelder
- ICC-Farbprofil — kann 500 Bytes bis 800 KB+ für Wide-Gamut-Profile sein
- Photoshop-Privatdaten — Adobe-Software betttet Schicht-Daten, intelligente Objekt-Referenzen und Bearbeitungsverlauf ein, die erheblich sein können
Für die Web-Bereitstellung sind all diese Metadaten unnötiger Overhead. Das Stripping produziert eine kleinere Datei mit null sichtbarer Änderung:
# Alle Metadaten mit ImageMagick löschen
magick input.png -strip output.png
# Mit pngcrush löschen (behält nur kritische Chunks)
pngcrush -rem allb input.png output.png
# Mit optipng löschen (optimiert auch Komprimierung)
optipng -strip all input.png -out output.png
Die Einsparungen beim Metadaten-Stripping betragen typischerweise 1 bis 5 KB für einfache Bilder, können aber 50 bis 800 KB für Dateien erreichen, die aus Photoshop mit eingebetteten ICC-Profilen und privaten Daten-Chunks exportiert wurden.
Kompressionsstufeneinstellungen
Die PNG-Kompressionsstufe steuert, wie aggressiv der DEFLATE-Algorithmus nach Mustern sucht. Hier ist, was jede Stufe in der Praxis bedeutet:
| Stufe | Kodierungsgeschwindigkeit | Dateigröße | Anwendungsfall |
|---|---|---|---|
| 0 | Augenblicklich | Größte (keine Komprimierung) | Debugging, Zwischenverarbeitung |
| 1 bis 3 | Sehr schnell | Groß | Echtzeit-Verarbeitung, temporäre Dateien |
| 4 bis 6 | Moderat | Mittel | Allgemeine Verwendung (die meisten Tools standardmäßig 6) |
| 7 bis 8 | Langsam | Klein | Web-Bereitstellung, Archivierung |
| 9 | Am langsamsten | Kleinste | Endgültige Bereitstellung, Web-Assets |
Der Unterschied zwischen Stufe 6 (Standard) und Stufe 9 (Maximum) beträgt typischerweise 2 bis 5% in der Dateigröße. Der Unterschied in der Kodierungszeit ist größer — Stufe 9 kann bei großen Bildern 5 bis 10 mal länger dauern als Stufe 6. Bei Web-Assets, bei denen Sie einmal kodieren und millionenfach bereitstellen, ist Stufe 9 immer die zusätzliche Kodierungszeit wert.
ImageMagick PNG-Qualitätsparameter
ImageMagick kodiert sowohl die Kompressionsstufe als auch den Filtertyp in einem einzigen -quality-Parameter für PNG. Die Zehnerstelle ist die zlib-Kompressionsstufe (0 bis 9), und die Einerstelle ist der Filtertyp (0 bis 5):
# Maximale Komprimierung, adaptives Filtern
magick input.png -strip -quality 95 PNG:output.png
# Aufschlüsselung: 9 = Kompressionsstufe 9, 5 = adaptiver Filter
# Adaptiver Filter testet alle 5 Filtertypen pro Zeile für optimale Ergebnisse
# Schnelle Komprimierung, kein Filtern
magick input.png -strip -quality 10 PNG:output.png
# Aufschlüsselung: 1 = Kompressionsstufe 1, 0 = kein Filter
Beste Standardeinstellung: Verwenden Sie -quality 95 für ImageMagick-PNG-Ausgabe. Die 9 bedeutet maximale Kompressionsbemühung, und 5 bedeutet adaptives Filtern (testet alle Filtertypen pro Zeile). Dies erzeugt die kleinste Datei auf Kosten einer langsameren Kodierung.
PNG-Filtertypen erklärt
Vor der DEFLATE-Komprimierung wendet PNG einen Pro-Zeilen-Vorhersagefilter an, der Pixeldaten transformiert, um sie komprimierbarer zu machen. Der Filter ändert das Bild nicht — es ist vollständig reversibel. Das Ziel ist es, die Daten repetitiver zu machen, damit DEFLATE sie besser komprimieren kann.
| Filter | ID | Vorhersagemethode | Beste für |
|---|---|---|---|
| Keine | 0 | Keine Vorhersage (rohe Bytes) | Palettierte Bilder (PNG-8), Zufallsrauschen |
| Sub | 1 | Pixel minus linker Nachbar | Horizontale Farbverläufe, horizontale Muster |
| Oben | 2 | Pixel minus Pixel oben | Vertikale Farbverläufe, vertikale Muster |
| Durchschnitt | 3 | Pixel minus Durchschnitt von links + oben | Glatte Bereiche, gemischter Inhalt |
| Paeth | 4 | Pixel minus Paeth-Prädiktor (nächster von links, oben, oben-links) | Komplexe natürliche Bilder |
| Adaptiv | 5 | Testet alle Filter pro Zeile, wählt beste | Alle Bilder (beste Standardeinstellung) |
Der adaptive Filter (manchmal auch „gemischt" oder „alle" genannt) testet alle fünf Filtertypen für jede Pixelzeile und wählt denjenigen aus, der die komprimierbarkste Ausgabe erzeugt. Dieser Brute-Force-Ansatz produziert fast immer die kleinste Datei, dauert aber länger zum Kodieren. Für die endgültige Web-Bereitstellung ist adaptives Filtern immer die richtige Wahl.
Wie wichtig sind Filter?
Die falsche Filterwahl kann die Dateigröße um 10 bis 30% erhöhen. Beispielsweise erhöht die Verwendung von „Keine"-Filter bei einer Fotografie (wo benachbarte Pixel ähnlich sind) das Kompressionspotenzial erheblich. Umgekehrt kann die Verwendung von „Sub" oder „Paeth" bei einem palettiertem Bild mit zufälligen Indexwerten die Datei tatsächlich größer als ohne Filter machen.
Deshalb ist adaptives Filtern die sichere Standardeinstellung — es wählt immer den richtigen Filter für jede Zeile, selbst wenn das Bild gemischte Inhaltstypen enthält (wie einen Screenshot mit Text und Fotografien).
Farbpaletten-Optimierung
Die dramatischste PNG-Größenreduktion kommt von der Konvertierung von 24-Bit-PNG (16,7 Millionen Farben) zu einer optimierten 8-Bit-Palette (256 Farben). Tools wie pngquant und pngnq verwenden ausgefeilte Algorithmen, um die besten 256 Farben auszuwählen und Dithering anzuwenden, um die fehlenden Farben zu simulieren.
Wie pngquant funktioniert
pngquant analysiert das Bild, um die 256 Farben zu finden, die das Original am besten darstellen. Für Pixel, die zwischen Palettenfarben fallen, wird Floyd-Steinberg-Dithering angewendet — eine Technik, die den Farbfehler auf benachbarte Pixel verteilt und die Illusion von mehr Farben durch räumliche Mischung erzeugt.
# Grundlegende Palette-Optimierung (256 Farben, Qualität 65-80)
pngquant 256 --quality=65-80 input.png -o output.png
# Palette-Optimierung mit maximaler Qualität
pngquant 256 --quality=80-100 --speed 1 input.png -o output.png
# Zu spezifischer Anzahl von Farben konvertieren
pngquant 64 input.png -o output.png # 64 Farben
pngquant 16 input.png -o output.png # 16 Farben (sehr klein)
Typische Palette-Optimierungsergebnisse
| Bildtyp | PNG-24-Größe | PNG-8 (256 Farben) | Ersparnisse | Visueller Einfluss |
|---|---|---|---|---|
| Logo (12 Farben) | 45 KB | 8 KB | 82% | Keiner (verlustfrei) |
| UI-Screenshot | 380 KB | 95 KB | 75% | Minimales Dithering |
| Illustration (flache Farben) | 210 KB | 52 KB | 75% | Keine bis minimal |
| Infografik mit Farbverläufen | 620 KB | 180 KB | 71% | Dithering in Farbverläufen |
| Fotografie | 8,5 MB | 2,1 MB | 75% | Starkes Dithering (JPG verwenden) |
Wichtig: Palette-Optimierung ist technisch mit Verlust — sie reduziert die Anzahl der verfügbaren Farben. Für Bilder, die bereits weniger als 256 unterschiedliche Farben verwenden, ist die Konvertierung jedoch völlig verlustfrei. Für Bilder mit etwas mehr Farben erzeugt Dithering Ergebnisse, die unter normalen Betrachtungsabständen visuell nicht vom Original zu unterscheiden sind.
PNG-Optimierungstools verglichen
Mehrere spezialisierte Tools bieten mehr als ImageMagick für die PNG-Komprimierung. Jeder verfolgt einen anderen Ansatz:
| Tool | Typ | Ansatz | Typische Ersparnisse |
|---|---|---|---|
| optipng | Verlustfrei | Testet mehrere Filter-/Kompressionskombinationen | 5 bis 15% |
| pngcrush | Verlustfrei | Brute-Force-Test aller Filter-/Kompressionskombos | 5 bis 15% |
| zopflipng | Verlustfrei | Googles Zopfli-Algorithmus (besser als DEFLATE) | 8 bis 20% |
| pngquant | Mit Verlust (Palette) | Reduziert auf 256-Farben-Palette mit Dithering | 60 bis 80% |
| oxipng | Verlustfrei | Multithreaded-optipng-Alternative (Rust) | 5 bis 15% |
Für beste Ergebnisse kombinieren Sie ein Tool mit und ohne Verlust: Führen Sie zuerst pngquant aus (wenn Palette-Reduktion akzeptabel ist), führen Sie dann zopflipng oder optipng für maximale verlustfreie Komprimierung aus:
# Pipeline für maximale Komprimierung
pngquant 256 --quality=80-100 input.png -o temp.png
zopflipng temp.png output.png
rm temp.png
Wenn PNG-Komprimierung ihre Grenzen erreicht
Keine Menge an PNG-Optimierung kann die grundlegende Realität überwinden: Verlustfreie Komprimierung kann bei Fotografien nicht mit Komprimierung mit Verlust konkurrieren. Dies ist kein Fehler in PNG — es ist eine mathematische Gewissheit. Verlustfreie Algorithmen müssen jeden Pixel erhalten, während JPEG Informationen verwirft, die das Auge nicht wahrnehmen kann.
| Bildtyp | Optimiertes PNG | JPEG Q85 | PNG ist größer um |
|---|---|---|---|
| 12 MP Smartphone-Foto | 14,2 MB | 1,8 MB | 7,9x |
| 24 MP DSLR-Foto | 28,5 MB | 4,7 MB | 6,1x |
| 1080p-Screenshot | 850 KB | 240 KB | 3,5x |
| Einfaches Logo (12 Farben) | 8 KB | 22 KB | JPEG ist 2,8x größer |
| UI-Symbol (flache Farben) | 3 KB | 9 KB | JPEG ist 3x größer |
Das Muster ist klar:
- Fotografien und komplexe natürliche Bilder — zu JPEG konvertieren. Sie sparen 3 bis 8 mal ohne merklichen Qualitätsverlust bei Q85.
- Einfache Grafiken, Logos, Symbole, textreiche Screenshots — bleiben Sie bei PNG. Es wird kleiner als JPEG und behält scharfe Kanten perfekt bei.
- Bilder mit Transparenz — bleiben Sie bei PNG (JPEG unterstützt keine Transparenz). Erwägen Sie WebP als Alternative, die sowohl Komprimierung mit Verlust als auch Transparenz unterstützt.
Die ehrliche Antwort: Wenn Ihr PNG eine Fotografie ist und die Dateigröße ein Problem ist, ist die beste „PNG-Kompressions"-Strategie die Konvertierung zu JPEG. Verwenden Sie den Konverter oben, um von PNG zu JPG zu gehen — Sie werden typischerweise eine Größenreduktion von 70 bis 90% mit unmerklichem Qualitätsverlust sehen.
Schritt-für-Schritt PNG-Kompressionsleitfaden
Hier ist ein praktischer Entscheidungsbaum zur Reduzierung der PNG-Dateigröße:
Schritt 1: Ist Ihr Bild eine Fotografie?
Wenn ja, zu JPEG konvertieren. Laden Sie Ihr PNG in den Konverter oben hoch und wählen Sie JPG als Ausgabeformat. Dies ist die wirkungsvollste Aktion für Foto-PNGs. Ein 15 MB PNG-Foto wird zu einem 1 bis 2 MB JPEG bei Q85 ohne sichtlichen Unterschied.
Wenn nein (es ist eine Grafik, ein Logo, ein Symbol oder ein Screenshot), gehen Sie zu Schritt 2.
Schritt 2: Wie viele Farben verwendet Ihr Bild?
Mit ImageMagick überprüfen:
magick identify -verbose input.png | grep "Colors:"
Wenn 256 oder weniger Farben: zu PNG-8 konvertieren für 70 bis 80% Ersparnisse ohne Qualitätsverlust:
magick input.png -strip -colors 256 -type Palette PNG8:output.png
Wenn mehr als 256 Farben: entscheiden Sie, ob Palette-Reduktion mit Dithering akzeptabel ist, oder behalten Sie PNG-24.
Schritt 3: Metadaten entfernen und Komprimierung maximieren
# Maximale verlustfreie Komprimierung mit Metadaten-Entfernung
magick input.png -strip -quality 95 PNG:output.png
Schritt 4: Spezialisierte Tools für weitere Einsparungen erwägen
# Verlustfreie Optimierung (garantiert keine Qualitätsänderung)
optipng -o7 -strip all input.png -out output.png
# ODER Palette-Reduktion mit Verlust (dramatische Einsparungen)
pngquant 256 --quality=80-100 input.png -o output.png
Batch PNG-Komprimierung
Wenn Sie einen ganzen Ordner von PNG-Dateien komprimieren müssen, sind Kommandozeilen-Tools der schnellste Ansatz.
Batch-Komprimierung verlustfrei
# Linux / macOS: maximale Komprimierung + Metadaten-Entfernung
mkdir -p compressed
for f in *.png *.PNG; do
[ -f "$f" ] || continue
magick "$f" -strip -quality 95 "compressed/$f"
done
Batch-Palette-Optimierung (pngquant)
# Alle PNG auf 256-Farben-Palette reduzieren
mkdir -p optimized
for f in *.png *.PNG; do
[ -f "$f" ] || continue
pngquant 256 --quality=80-100 "$f" -o "optimized/$f"
done
Windows PowerShell
New-Item -ItemType Directory -Force -Path ".\compressed"
Get-ChildItem *.png | ForEach-Object {
magick $_.FullName -strip -quality 95 (".\compressed\" + $_.Name)
}
Batch PNG zu JPG konvertieren (maximale Einsparungen für Fotos)
# Alle PNG-Fotos zu Q85 JPEG konvertieren
mkdir -p jpg_output
for f in *.png *.PNG; do
[ -f "$f" ] || continue
magick "$f" -quality 85 -interlace Plane -strip "jpg_output/${f%.*}.jpg"
done