Lossy, lossless en wat een compressor echt kan weghalen

PNG is lossless, verliesvrij, dus een kwaliteitsschuif heeft niets om aan te draaien: elke pixel wordt exact bewaard, en een PNG kleiner maken kan alleen door de afmetingen terug te brengen of hem geen PNG meer te laten zijn. JPEG is lossy, met verlies, dus de kwaliteit van 95 naar 78 zetten halveert het bestand vaak zonder zichtbaar verschil. Welk soort formaat je in handen hebt, bepaalt welke hendel er bestaat.

De juiste vraag bij een grote PNG is bijna altijd of het wel een PNG moet zijn.

Welk formaat past bij welke inhoud?

De formaten zijn voor verschillende beelden ontworpen, en gedragen zich slecht bij die van de ander.

Inhoud Beste formaat Waarom
Foto’s JPEG of WebP Compressie met verlies past bij vloeiende tinten
Schermafbeeldingen van tekst PNG of lossless WebP Scherpe randen blijven scherp
Logo’s, vlakke kleur PNG of SVG Weinig kleuren, harde randen
Alles met transparantie PNG of WebP JPEG kan het niet bewaren
Web, van welke soort ook WebP 25–30 % kleiner bij gelijke kwaliteit

Een foto opgeslagen als PNG is de gebruikelijke dure vergissing. Hij bewaart elke pixel exact en wordt enorm, en omzetten naar JPEG levert vaak een tiende van de grootte op zonder zichtbaar verschil. Een logo als JPEG is de omgekeerde vergissing, en geeft de wazige rand rond elke lijn die JPEG maakt bij harde overgangen.

Waarom vervangt WebP ze allebei?

Omdat het twee modi heeft. Lossy WebP concurreert met JPEG bij foto’s, zo’n 25 tot 30 procent kleiner bij dezelfde kwaliteit; lossless WebP concurreert met PNG bij graphics, en transparantie werkt in beide.

Elke huidige browser leest het, waarmee het enige echte bezwaar verdween. Wat overblijft is software verderop in de keten: sommige oudere desktopprogramma’s en drukkerijworkflows openen het nog niet, en daarom is WebP naar PNG een veelgevraagde omzetting, ook al is WebP het betere formaat.

Die omzetting brengt niets terug. Een WebP die je van een website opslaat is meestal lossy, dus het detail was al weggegooid voordat het bestand bij jou was; omzetten naar PNG geeft een groter bestand met precies dezelfde informatie.

Hoeveel kost generatieverlies echt?

Elke keer een beetje, en het telt op. Elke nieuwe JPEG-codering gooit iets meer weg, dus een bestand dat vijf keer is gecomprimeerd ziet er duidelijk slechter uit dan hetzelfde bestand dat één keer met dezelfde instelling is gecomprimeerd.

Dat is het argument om te werken vanuit een origineel wanneer dat er is, en om formaatkeuzes één keer te maken in plaats van omzettingen aan elkaar te rijgen. Een JPEG omzetten naar WebP is ook hercoderen: de JPEG gooide al detail weg en WebP laat nu een beetje meer vallen van wat er over was.

Verliesvrije formaten hebben dat probleem niet. Een PNG kun je eindeloos openen en opslaan zonder dat er iets verandert, en daarom is het het goede tussenformaat voor iets waar je nog aan werkt.

Wat wordt er precies weggegooid?

Het detail waar het oog het minst gevoelig voor is, gekozen door de codec en niet willekeurig. JPEG werkt in blokken van acht bij acht pixels, zet elk blok om in een weergave in frequenties en gooit eerst de hoogfrequente delen weg, omdat het oog een verandering in algehele helderheid veel sneller opmerkt dan een verandering in fijne textuur.

Daarom zien JPEG-vlekken eruit zoals ze eruitzien. De blokjes bij lage kwaliteit zijn het raster van acht pixels dat zichtbaar wordt, en de kleurrandjes rond scherpe randen zijn hetzelfde proces dat faalt bij een overgang die helemaal uit hoge frequenties bestaat.

En daarom kan het formaat goed met foto’s overweg en slecht met tekst. Een foto is grotendeels zachte verlopen; een schermafbeelding van tekst is niets dan harde randen, precies wat het algoritme het eerst weggooit.

Telt resolutie meer dan kwaliteit?

Meestal wel, en ruim. Een foto van 4.000 pixels die op 800 breed wordt getoond, draagt vijfentwintig keer meer gegevens mee dan hij kan laten zien.

De lange zijde begrenzen is dus de eerste stap bij elke te grote afbeelding en de kwaliteitsschuif de tweede, en dat is de volgorde die het artikel over verkleinen uitwerkt.

De uitzondering is drukwerk, waar de pixels wel gebruikt worden. Daar bepalen het afdrukformaat en de dpi de afmetingen, en is kwaliteit de enige hendel die overblijft.

Vragen die mensen stellen

Waarom werd mijn PNG groter na comprimeren? Bijna altijd omdat het een PNG-8 met een palet was. Een browsercanvas codeert hem opnieuw als 32-bits RGBA, en dat is meer bytes per pixel dan een palet. Verklein zo’n bestand in plaats van het op dezelfde maat opnieuw te coderen.

Is 75 een veilige standaardkwaliteit? Voor foto’s over het algemeen wel. Onder de 70 of zo verschijnen vlekken in zachte verlopen, eerst in lucht en huid, en boven de 90 groeit het bestand snel voor een verschil dat niemand ziet.

Moet ik het origineel bewaren? Altijd, als er een kans is dat je het opnieuw bewerkt. Elke export is een stap zonder weg terug, en het origineel is het enige dat je later nog een andere keuze laat maken.

Helpt metadata weghalen? Een beetje, en het haalt ook locatie, cameramodel en datums weg, wat vaak goed uitkomt voordat je iets deelt en soms een verlies is dat je niet zocht.

Is AVIF de moeite al waard? Het is bij dezelfde kwaliteit nog kleiner dan WebP en elke huidige browser leest het. Het gat dat overblijft is hetzelfde als destijds bij WebP: desktop- en drukwerksoftware die nog niet bij is.

Lossy formaten hebben een kwaliteitshendel en lossless formaten afmetingen. Afbeelding comprimeren werkt op de formaten die iets weg te gooien hebben, JPEG en WebP allebei, png comprimeren is eerlijk over wat het niet kan, en png naar jpg, jpg naar png, jpg naar webp, png naar webp, webp naar png en webp naar jpg doen de omzettingen die de grootte echt veranderen.