Blog · Gidsen

Hoe lossless beeldcompressie écht werkt

Waarom een kleiner bestand pixel-voor-pixel identiek kan zijn aan het origineel — en de trucs met voorspelling, modellering en entropiecodering die dat mogelijk maken.

in == out · fewer bytes

"Lossless" klinkt als een tegenstrijdigheid: hoe kan een bestand kleiner worden zonder iets weg te gooien? De truc is dat een afbeelding vol <b>redundantie</b> zit, en compressie is de kunst om dezelfde pixels met minder bits te beschrijven. Decodeer het en je krijgt elke oorspronkelijke waarde exact terug — bit voor bit.

Wat "lossless" echt betekent

Lossy formaten zoals JPEG gooien informatie weg die je oog toch nauwelijks zal missen. Lossless-compressie gooit <i>niets</i> weg: de gedecodeerde afbeelding is identiek aan de invoer. Daarom is het de juiste keuze voor screenshots, lijntekeningen, logo's, UI-assets en archiefmasters — alles waar één verschoven pixel een bug zou zijn, geen afrondingsfoutje.

Stap 1: model de data beter

Ruwe pixels zijn verspillend omdat buren sterk gecorreleerd zijn — de pixel links van je is meestal een prima gok voor de huidige. Lossless-codecs <b>voorspellen</b> elke pixel op basis van zijn buren en slaan alleen de kleine fout op (het residu). PNG noemt dit <i>filters</i> (Sub, Up, Average, Paeth); hoe beter de voorspelling, hoe dichter de residuen rond nul clusteren, en nullen comprimeren prachtig.

Stap 2: entropiecodering

Zodra de data grotendeels bestaat uit kleine, repetitieve residuen, kent een <b>entropiecoder</b> korte codes toe aan veelvoorkomende waarden en lange codes aan zeldzame. PNG gebruikt DEFLATE (LZ77 + Huffman); moderne codecs zoals WebP lossless en JPEG XL gebruiken contextmodellering met arithmetische of ANS-codering, wat dichter bij de theoretische limiet komt. Het formaat verandert, maar het idee blijft hetzelfde: minder bits besteden aan wat voorspelbaar is.

Tool
Wat het doet
oxipng
Probeert PNG-filtercombinaties + comprimeert DEFLATE opnieuw
zopfli
Tragere DEFLATE die kleinere streams vindt
WebP -lossless
Voorspelling + kleurtransformaties + arithmetisch
JPEG XL -d 0
Beste ratio; kan ook JPEG's transcoderen

Waar de tools om de hoek komen kijken

Daarom kunnen twee lossless PNG's van dezelfde afbeelding sterk in grootte verschillen: de pixels zijn identiek, maar de encoder heeft harder gewerkt om ze te beschrijven. <b>oxipng</b> doorzoekt filterstrategieën en comprimeert opnieuw; <b>zopfli</b> is een veel tragere DEFLATE die vaak nog een paar procent extra schaaft; WebP en JPEG XL brengen compleet slimmere modellen mee. Geen van alle raakt een pixel aan.

# Lossless, maximale inspanning — identieke pixels, kleiner bestand
imageforge logo.png --lossless --effort max
imageforge ui-export.png --convert webp --lossless

De eerlijke grenzen

Lossless heeft een ondergrens. Foto's van echte scènes bevatten oprecht hoogfrequente details (sensorruis, fijne textuur) die zich simpelweg niet goed laten voorspellen, dus daar zijn de lossless-winsten bescheiden — dat is het moment waarop lossy formaten hun bestaansrecht bewijzen. Voor vlakke, synthetische of tekstrijke afbeeldingen snijdt lossless echter routinematig 30–70% weg zonder kwaliteitsverlies. De kunst is te weten in welk vakje jouw afbeelding valt.

Knijp je PNG's uit zonder een pixel aan te raken.

ImageForge draait oxipng, zopfli en moderne lossless-encoders voor je — lokaal.

Lees verder