Notities van het team over vakmanschap, formaten en de kleine beslissingen achter een goed resultaat.
De lossless container, wat PNG opslaat
PNG gebruikt het lossless compressiealgoritme DEFLATE. Het slaat de RGBA-waarden van elke pixel exact op zoals geleverd, past een omkeerbaar filter toe op elke scanlijn en comprimeert het resultaat met een zlib-variant. Lossless betekent dat de gedecomprimeerde pixelwaarden byte-identiek zijn aan de originelen. Voor het JPG-naar-PNG-geval zijn de originelen de pixels die ontstaan wanneer de browser de JPEG decodeert. Die gedecodeerde pixels weerspiegelen al alle benaderingen die JPEG bij zijn oorspronkelijke codering maakte, dus PNG slaat getrouw de benaderde pixels op, niet de echte scène. Gemeten wordt een JPEG van op 1024x768 ongeveer als PNG, en een JPEG van op 3840x2160 groeit naar zo'n . Deze veelvouden houden grofweg stand over inhoudstypen heen, omdat de verhouding de resolutie volgt, niet het JPEG-kwaliteitsniveau. De lossless formaat is waardevol om wat hij voorkomt, verdere achteruitgang, niet om wat hij herstelt.
Waarom JPEG-kwaliteit niet te herstellen is
JPEG-compressie gooit informatie permanent weg. Het coderingsproces past een discrete cosinustransformatie toe op blokken van 8x8 pixels, kwantiseert de resulterende frequentiecoëfficiënten naar een kleinere set en slaat die gekwantiseerde waarden op. De kwantisatiestap is eenrichtingsverkeer, want een coëfficiënt die 47 was en naar 50 werd afgerond kan later niet terug naar 47, en geen enkele opname van de oorspronkelijke waarde overleeft in het bestand. Wanneer de browser de JPEG decodeert, reconstrueert hij pixels uit de gekwantiseerde coëfficiënten, die benaderingen zijn van de oorspronkelijke waarden. Die benaderde pixels opnieuw coderen als PNG levert een lossless opname van de benaderingen op, dus de PNG is een perfecte weergave van de achteruitgegane afbeelding. Dit is geen beperking van PNG of van deze tool, het is een fundamentele eigenschap van lossy compressie, waarbij informatie die bij coderen wordt weggegooid weg is. Betere JPEG-kwaliteit vereist een start vanaf het ongecomprimeerde of RAW-origineel.
Gemeten groei van de bestandsgrootte
De grootteverhouding van JPG naar PNG varieert per beeldinhoud maar volgt een voorspelbaar patroon. Fotografische beelden met complexe toonvariatie groeien het meest, omdat JPEG's transformatie precies op die inhoud is afgestemd en hoge compressieverhoudingen haalt, terwijl PNG's lossless codeerder die verhoudingen niet kan evenaren bij ruisige pixeldata. Testmetingen van deze tool tonen dat een JPEG-foto van op 1024x768 een PNG van oplevert, ongeveer een verzesvoudiging, en een JPEG-foto van op 3840x2160 een PNG van , ongeveer 3,3 keer groter. Voor effen materiaal zoals screenshots en pictogrammen past JPEG om te beginnen al slecht en zijn de bestanden bij gelijke kwaliteit groter, dus de PNG van dezelfde inhoud groeit minder dramatisch. De praktische gevolgtrekking is direct, als de uitvoergrootte ertoe doet voor jouw geval, maakt een JPG naar PNG omzetten de situatie slechter, niet beter.
Transparantie, de mogelijkheid versus de inhoud
PNG ondersteunt een 8-bit transparantie als formaatfunctie, waarbij een bestand per pixel dekkingswaarden kan bevatten van 0 (volledig transparant) tot 255 (volledig dekkend). Wanneer een JPG via de afbeeldingsengine van het platform naar een PNG wordt omgezet, wordt de resulterende PNG volledig dekkend gezet, elke pixel op een alfawaarde van 255, omdat de bron-JPG om te beginnen geen transparantie-informatie had. Het PNG-formaat staat klaar om transparantiedata te bevatten, het bestand bevat ze alleen niet, omdat er geen aanwezig was in de bron. Transparantie aan de afbeelding toevoegen vereist aparte verwerking, ofwel de achtergrond maskeren in een editor ofwel een automatische achtergrondverwijderstap. Een achtergrondverwijder-tool dat is getraind om het onderwerp te herkennen, kan een PNG met echt alfa leveren door de alfawaarden van de achtergrondpixels na de omzetting op nul te zetten.
Omgang met EXIF-metadata
De hercoderingspijplijn verwijdert EXIF-, IPTC- en XMP-metadata uit de PNG-uitvoer in elke browser. Dat betekent dat GPS-coördinaten, cameramodel, opnamedatum, copyrightteksten en eventuele aangepaste XMP-velden uit de bron-JPG worden verwijderd. ICC-kleurprofielen volgen een iets ander pad, waarbij Chrome en Safari de sRGB-ICC-profieltag in de uitvoer behouden en Firefox die samen met alle andere metadata verwijdert. Het praktische resultaat is sRGB-veilige uitvoer over browsers heen, maar wide-gamutprofielen zoals Display-P3 of Adobe RGB gaan in Firefox verloren. Voor de meeste web- en deeldoeleinden is het verwijderen van metadata nuttig, want het verkleint de uitvoer iets en haalt locatiedata uit foto's. Voor professionele fotografie of archiefworkflows waarbij ingebedde metadata behouden moet blijven, behandel je de metadataketen met een speciale tool voor of na de formaatomzetting.
Privacy in de praktijk
Waar de conversie gebeurt, hangt af van het aantal bestanden. Bij één afbeelding verlaten er geen gegevens de browser, en dat is in real time te controleren. Het netwerk blijft inactief bij een enkele conversie. De lijst blijft leeg tijdens het coderen. Bij twee of meer bestanden stuurt RoundCut ze naar onze server, die omzet, het resultaat inpakt en een downloadlink teruggeeft. Die link en de omgezette bestanden worden binnen ongeveer 2 uur verwijderd. Het pad voor één afbeelding draait volledig op je apparaat, buiten het netwerk, terwijl het batchpad dat inruilt voor het gemak van veel bestanden in één stap. Bij afbeeldingen met gevoelige inhoud, zoals een screenshot van een persoonlijk document of een foto met locatiegegevens, houdt één voor één omzetten alles lokaal.