Bij het zoeken naar 'PNG compressie' staan de toptools allemaal te kloven over 'lossless' en 'kwaliteit', maar de besparing verschilt enorm: de een bespaart 70%, de andere slechts 10%.
Het verschil zit niet in wie een magischer algoritme heeft, maar in wat ze onder 'lossless' verstaan: het zijn twee totaal verschillende dingen.
Dit artikel legt het verschil eerst uit en adviseert vervolgens tools op basis van gebruiksscenario.
Eerst onderscheiden: twee soorten 'lossless'
Echte lossless: geen enkele pixel verandert
PNG is zelf een lossless formaat; de grootte wordt bepaald door twee dingen: hoe de pixelgegevens zijn gerangschikt en gecomprimeerd met Deflate, en hoeveel metadata er in het bestand zit.
Echte lossless-compressie werkt alleen aan deze twee punten:
- Een efficiëntere opslag wijze kiezen. Bijvoorbeeld: als de afbeelding in werkelijkheid maar 200 kleuren gebruikt, wordt de paletmodus gebruikt; als er geen transparantie is, wordt het Alpha-kanaal verwijderd; bij grijstinten wordt het grijswaarden-formaat gebruikt.
- Betere filters en Deflate-parameters proberen. Dezelfde pixels, andere codering, het resultaat kan aanzienlijk kleiner zijn. Ontwerptools proberen bij het exporteren van PNG vaak niet zo hard.
- Metadata verwijderen. Export-informatie, tijdstempels, tekstannotaties, miniaturen, enzovoort.
Na het comprimeren verschijnt de afbeelding, en is deze pixel voor pixel exact hetzelfde als de originele. De prijs is dat het weinig besparing oplevert – het kan alleen de 'waterdichting' van niet-geoptimaliseerde bestanden wegnemen.
'Lijkt lossless': eigenlijk kwantisering met verlies
Tools zoals TinyPNG en pngquant besparen veel omdat ze iets anders doen: het aantal kleuren in de PNG tot minder dan 256 reduceren (kwantisering) en daarna het ditheren gebruiken zodat het voor het oog nauwelijks merkbaar is.
Dit is met verlies; de pixels zijn al veranderd. Voor de meeste webicoontjes en illustraties is dit prima en de moeite waard; maar als je 'absoluut geen enkele pixel mag veranderen' nodig hebt – bijvoorbeeld bij UI-slices die strikt overeen moeten komen met de ontwerpbronnen, screenshots voor pixel-voor-pixel vergelijking, of bronmaterialen die later moeten worden bewerkt – is dit niet geschikt.
De eenvoudigste manier om te bepalen of een tool echt lossless is, is om het bestand voor en na comprimeren te vergelijken met ImageMagick
compare -metric AE origineel.png gecomprimeerd.png null:
Als de output0is, is er geen enkele pixel veranderd.
Aanbevelingen voor echte lossless PNG-tools
Commando-regel: oxipng (aanbevolen)
oxipng is een PNG-lossless-optimizer geschreven in Rust, en kan worden beschouwd als de moderne opvolger van de bekende tool OptiPNG:
- Multithreading, snel, geschikt voor batchverwerking.
-o 0tot-o 6(en-o max) om de compressiekracht aan te passen; hoe hoger, hoe trager en meer besparing.--zopflioptioneel voor extra compressie, maar veel langzamer.- Squoosh gebruikt voor zijn lossless PNG-compressie deze tool.
bash
brew install oxipng
oxipng -o 2 --strip safe -r ./images # Recursief de map verwerken, alleen niet-essentiële metadata verwijderen
Commando-regel: zopflipng (voor extreme bestandsgrootte)
Gemaakt door Google, herimplementeert het de Deflate-compressie met het Zopfli-algoritme. Het kan doorgaans iets meer uitknijpen dan de standaardinstellingen van oxipng, maar is veel trager; grote afbeeldingen kunnen lang duren. Geschikt voor statische bronnen die één keer worden gecomprimeerd en lang gebruikt worden, zoals website-logos en ingebouwde app-iconen.
Commando-regel: OptiPNG, pngcrush (bekend)
Beide zijn klassieke PNG-lossless-optimizers die nog in veel toolchains te vinden zijn. Functioneel zijn ze in grote mate gedekt door oxipng, dus voor nieuwe projecten is het niet nodig ze apart te kiezen.
Web: Squoosh
De online tool van Google. Voor PNG is de OxiPNG-coderer gekozen voor lossless-compressie (zorg dat u 'Reduce palette' niet aanvinkt; dat is met verlies).
Het voordeel is dat het geïnstalleerd hoeft te worden en voor vergelijking kan worden gebruikt; het nadeel is dat het slechts één bestand per keer kan verwerken; het gedownloade bestand moet nog zelf hernoemd en vervangen worden. Geschikt voor het incidenteel comprimeren van één of twee bestanden.
Mac grafische interface: ImageOptim
Een bekende, gratis open-source Mac-tool die intern oxipng, Zopfli, pngcrush en meer samenvoegt om het kleinste resultaat te vinden. Standaard is de modus lossless (voor verlies moet dit handmatig worden ingeschakeld).
Het comprimeert sterk, maar als alle optimalisaties aanstaan is het traag; het overschrijft ook direct het originele bestand, dus het is beter om een back-up te maken voordat u begint.
Mac grafische interface: ImgZilla
ImgZilla is onze macOS-imagecompressietool. De manier waarop het PNG verwerkt, is direct:
- Echte lossless-compressie met oxipng, compressieniveau 2 (zoals standaard in Squoosh), een balans tussen snelheid en grootte. Geen enkele pixel verandert, wat kan worden geverifieerd met de hierboven genoemde
compare-opdracht. - Geen kwantisering, geen kleurenreductie, geen formaatwisseling, geen resampling. Na comprimeren is het bestand nog steeds PNG.
- Comprimeren op de originele locatie: bestandsnaam en pad blijven hetzelfde, dus referenties in code of documenten hoeven niet gewijzigd te worden.
- De hele map erin slepen: recursieve scan van submappen, automatisch overslaan van verborgen bestanden en
node_modules; JPG, GIF, WebP, HEIC, AVIF en SVG worden ook verwerkt. - Originele bestanden worden standaard in de prullenbak geplaatst; als u niet tevreden bent, sleept u ze met de rechtermuisknop terug naar de originele locatie.
- Hard comprimeren als het niet kan: bestanden met minder dan 0,4% besparing worden gemarkeerd als 'geoptimaliseerd' en behouden hun oorspronkelijke grootte, er wordt ook geen gratis quota afgetrokken.
- Volledig lokaal uitgevoerd, geen uploaden naar servers.
Er zijn twee punten om duidelijk te maken:
- Het is niet de bedoeling om de absolute minimumgrootte voor PNG te bereiken. Niveau 2 is veel sneller dan
-o maxof Zopfli, wat kan betekenen dat er enkele procenten minder besparing is. Als uw doel is 'het laatste bit uit een logo persen', is zopflipng of ImageOptim geschikter. - Standaard wordt alle metadata uit de PNG verwijderd, inclusief kleurprofielen. Normale sRGB-afbeeldingen zijn hierdoor niet beïnvloed; als echter een kleurenprofiel als Display P3 is ingebed (vaak bij Mac-screenshots of bij export uit ontwerptools), kan de kleur na verwijdering in kleurbeheer-apps iets veranderen. Voor afbeeldingen waarop kleur nauwkeurigheid cruciaal is, kunt u in de instellingen 'EXIF-informatie behouden' inschakelen, dan blijft de metadata behouden.
Samenvatting in een tabel
| Tool | Type | Is echt lossless? | Batch | Voor wie |
|---|---|---|---|---|
| oxipng | Commando-regel | ✅ | ✅ | Ontwikkelaars, build-processen |
| zopflipng | Commando-regel | ✅ | Handmatig script nodig | Extreme bestandsgrootte, snelheid niet belangrijk |
| OptiPNG / pngcrush | Commando-regel | ✅ | ✅ | Oude projecten voortzetten |
| Squoosh | Web | ✅ (OxiPNG, zonder kleurenreductie) | ❌ één per keer | Incidenteel één of twee bestanden comprimeren |
| ImageOptim | Mac-app | ✅ (standaard) | ✅ | Mac-gebruikers die maximale compressiekracht willen |
| ImgZilla | Mac-app | ✅ | ✅ map slepen | Batch-compressie willen, paden niet willen veranderen, terugroepen willen |
| TinyPNG / pngquant | Web / Commando-regel | ❌ Kwantisering met verlies | Afhankelijk van versie | Kleurenreductie accepteren, hogere compressie willen |
Hoe te kiezen
- Alleen pixels mogen veranderen en u wilt de opdrachtregel gebruiken: oxipng, in een build-script opnemen voor blijvende oplossing.
- Eén bestand naar het absoluut minimum willen persen: zopflipng.
- Batch-verwerking met grafische interface op Mac: ImageOptim geeft meer kracht; ImgZilla is sneller, origineel uit prullenbak te halen en verwerkt ook andere formaten.
- Licht met verlies accepteren voor nog kleinere bestanden: TinyPNG / pngquant, maar wees u ervan bewust dat dit niet meer lossless is.
Laatste tip: hoeveel lossless-compressie bespaart, hangt af van hoe de PNG oorspronkelijk is geëxporteerd. Ontwerptools exporteren direct; PNG's die nog nooit zijn behandeld, bevatten vaak veel 'water'. Na alvast geoptimaliseerde PNG's is er vaak niet veel meer weg te snijden – als een tool aangeeft 'geoptimaliseerd', betekent dit dat het bestand al goed is, niet dat het tool niet werkt.
ImgZilla ondersteunt momenteel alleen macOS (12.3 en hoger) en is beschikbaar in de Mac App Store. De gratis versie comprimeert 10 afbeeldingen per dag; alleen geslaagde compressies tellen mee – sleept u een map vol PNG's en controleert u met
compareof de pixels daadwerkelijk gelijk zijn.
