pngquant — PNG-Bilder verlustbehaftet komprimieren
Verlustbehafteter PNG-Kompressor: reduziert 24/32-Bit-Bilder auf 8-Bit-Paletten – oft 60–70 % kleiner bei kaum sichtbarem Qualitätsverlust.
pngquant verkleinert PNG-Dateien drastisch, indem es 24/32-Bit-Bilder auf eine 8-Bit-Palette mit Alphakanal reduziert – oft 60–70 % kleiner bei kaum sichtbarem Unterschied. Die Quantisierung ist allerdings verlustbehaftet: Im Standard entsteht eine neue Datei name-fs8.png, doch mit --ext .png --force überschreibst du das Original – lege also ein Backup an. Wo echte Verlustfreiheit Pflicht ist, greifst du besser zu optipng.
Grundlagen
pngquant <image.png> — Quantisiert auf 256 Farben, Ausgabe als
pngquant screenshot.pngpngquant <n> <image.png> — Quantisiert auf eine bestimmte Farbanzahl (2–256).
pngquant 128 screenshot.pngpngquant --output <output.png> <input.png> — Schreibt in eine bestimmte Ausgabedatei.
pngquant --output optimized.png original.pngpngquant -o <output.png> <input.png> — Kurzform von --output.
pngquant -o small.png large.pngpngquant --ext .png --force <image.png> — Überschreibt die Originaldatei direkt (in-place).
pngquant --ext .png --force screenshot.pngpngquant *.png — Stapelverarbeitung aller PNGs (erzeugt *-fs8.png-Dateien).
pngquant images/*.pngQualitätssteuerung
pngquant --quality=<min>-<max> <image.png> — Legt den Qualitätsbereich fest (0–100). Bricht mit Exit-Code 99 ab, wenn das Minimum nicht erreicht wird.
pngquant --quality=65-80 photo.pngpngquant --quality=80-100 <image.png> — Hohe Qualität (geringe Kompression, kleinere Einsparung).
pngquant --quality=80-100 icon.pngpngquant --quality=45-65 <image.png> — Aggressive Kompression (größere Einsparung, bei genauem Hinsehen sichtbar).
pngquant --quality=45-65 background.pngpngquant --quality=0-100 <image.png> — Akzeptiert jede Qualität (bricht nie ab, maximale Kompression).
pngquant --quality=0-100 image.pngpngquant --skip-if-larger <image.png> — Schreibt keine Ausgabe, wenn sie größer als das Original wäre.
pngquant --skip-if-larger icon.pngFarben & Dithering
pngquant 64 <image.png> — Reduziert auf 64 Farben (gut für einfache Grafiken).
pngquant 64 icon.pngpngquant 16 <image.png> — Reduziert auf 16 Farben (sehr klein, ideal für Icons/Logos).
pngquant 16 logo.pngpngquant --nofs <image.png> — Deaktiviert Floyd-Steinberg-Dithering (schärfere Kanten, mögliches Banding).
pngquant --nofs icon.pngpngquant --floyd=<n> <image.png> — Setzt die Dithering-Stärke (0.0 = aus, 1.0 = voll, Standard: 1.0).
pngquant --floyd=0.5 photo.pngpngquant --posterize <bits> <image.png> — Reduziert die Präzision der Farbkanäle (nützlich bei Verläufen).
pngquant --posterize 4 gradient.pngGeschwindigkeit & Performance
pngquant --speed <n> <image.png> — Setzt den Kompromiss aus Geschwindigkeit und Qualität (1 = beste Qualität, 11 = am schnellsten).
pngquant --speed 1 photo.pngpngquant --speed 1 --quality=65-80 <image.png> — Langsamste Stufe für das beste Qualitätsergebnis.
pngquant --speed 1 --quality=65-80 hero-image.pngpngquant --speed 11 *.png — Schnellste Verarbeitung für Stapeloperationen.
pngquant --speed 11 thumbnails/*.pngAusgabeoptionen
pngquant --ext <suffix> <image.png> — Legt das Suffix der Ausgabedatei fest (Standard: -fs8.png).
pngquant --ext -small.png screenshot.pngpngquant --strip <image.png> — Entfernt alle Metadaten aus der Ausgabe.
pngquant --strip photo.pngpngquant - < <input.png> > <output.png> — Liest von stdin, schreibt nach stdout (für Pipes).
cat input.png | pngquant - > output.pngpngquant --verbose <image.png> — Zeigt ausführliche Verarbeitungsinfos (umgerechnete Farben, Dateigrößen).
pngquant --verbose screenshot.pngTypische Muster
pngquant --quality=65-80 --speed 1 --strip --ext .png --force *.png — Web-Optimierung: in-place, Metadaten entfernt, qualitätsgesteuert.
pngquant --quality=65-80 --speed 1 --strip --ext .png --force assets/*.pngfind . -name '*.png' -exec pngquant --quality=65-80 --skip-if-larger --strip --ext .png --force {} \; — Optimiert rekursiv alle PNGs in-place (sicher, überspringt größere Ergebnisse).
find public/ -name '*.png' -exec pngquant --quality=65-80 --skip-if-larger --strip --ext .png --force {} \;pngquant --quality=65-80 --strip photo.png && optipng -o2 photo-fs8.png — Pipeline: pngquant (verlustbehaftet), dann optipng (verlustfrei) für maximale Kompression.
pngquant --quality=65-80 --strip photo.png && optipng -o2 photo-fs8.pngpngquant 256 --quality=80-100 --skip-if-larger --nofs logo.png — Optimiert ein Logo/Icon (kein Dithering für scharfe Kanten, hohe Qualität).
pngquant 256 --quality=80-100 --skip-if-larger --nofs logo.pngfor f in *.png; do pngquant --quality=65-80 --strip -o "dist/$f" "$f"; done — Stapeloptimierung in ein separates Verzeichnis.
mkdir -p dist && for f in src/*.png; do pngquant --quality=65-80 --strip -o "dist/$(basename $f)" "$f"; done Fazit
pngquant gehört zu den effektivsten Werkzeugen für schlanke PNGs im Web: Mit --quality 65-80, --speed und einer passenden Farbanzahl holst du große Einsparungen heraus, ohne dass das Auge etwas bemerkt. Behalte aber im Kopf, dass die Kompression verlustbehaftet ist – einmal quantisierte Farben sind unwiderruflich weg. Der Standard schützt dich, weil er eine neue -fs8.png schreibt; sobald du --force mit --ext .png oder --output kombinierst, überschreibst du das Original endgültig – arbeite dann nur mit Backups. Unterschreitet das Ergebnis dein Qualitätsminimum, bricht pngquant mit Exit-Code 99 ab und lässt die Datei unangetastet. Für rein verlustfreie Anforderungen ist optipng die richtige Wahl.
Weiterführende Links
- pngquant – offizielle Website – Dokumentation, Optionen und Downloads zum Quantisierer
- pngquant auf GitHub – Quellcode, Issues und die zugrunde liegende libimagequant-Bibliothek