Notes de l'equip sobre artesania, formats i les petites decisions darrere d'un bon resultat.
El contenidor sense pèrdua, què desa el PNG
El PNG fa servir l'algorisme de compressió sense pèrdua DEFLATE. Desa els valors RGBA de cada píxel exactament tal com es proporcionen, aplica un filtre reversible a cada línia d'exploració i comprimeix el resultat amb una variant de zlib. Sense pèrdua vol dir que els valors de píxel descomprimits són idèntics byte a byte als originals. Per al cas de JPG a PNG, els originals són els píxels produïts quan el navegador descodifica el JPEG. Aquests píxels descodificats ja reflecteixen totes les aproximacions que el JPEG va fer durant el seu desament original, així que el PNG desa fidelment els píxels aproximats, no l'escena del món real. Mesurat, un JPEG de a 1024x768 es descodifica a uns com a PNG, i un JPEG de a 3840x2160 creix fins a uns . Aquests múltiples es mantenen aproximadament a través dels tipus de contingut perquè la relació segueix la resolució, no el nivell de qualitat del JPEG. El format sense pèrdua és valuós pel que evita, més deteriorament, no pel que restaura.
Per què la qualitat del JPEG no es pot recuperar
La compressió JPEG descarta informació de manera permanent. El procés de codificació aplica una transformada de cosinus discreta a blocs de 8x8 píxels, quantifica els coeficients de freqüència resultants a un conjunt més petit i desa aquests valors quantificats. El pas de quantificació és d'un sol sentit, ja que un coeficient que era 47 i es va arrodonir a 50 no es pot retornar a 47 més tard, i cap registre del valor original no sobreviu al fitxer. Quan el navegador descodifica el JPEG, reconstrueix píxels a partir dels coeficients quantificats, que són aproximacions dels valors originals. Tornar a codificar aquests píxels aproximats com a PNG produeix un registre sense pèrdua de les aproximacions, així que el PNG és una representació perfecta de la imatge degradada. Això no és una limitació del PNG ni d'aquesta eina, és una propietat fonamental de la compressió amb pèrdua, on la informació descartada en el moment de codificar ja no hi és. Millorar la qualitat del JPEG requereix partir de l'original sense comprimir o RAW.
Creixement mesurat de la mida del fitxer
La relació de mida de JPG a PNG varia segons el contingut de la imatge però segueix un patró previsible. Les imatges fotogràfiques amb variació tonal complexa creixen més, perquè la transformada del JPEG està ajustada exactament per a aquest contingut i assoleix relacions de compressió altes, mentre que la compressió sense pèrdua del PNG no pot igualar aquestes relacions amb dades de píxels sorollosos. Les mesures de prova d'aquesta eina mostren que una foto JPEG de a 1024x768 produeix un PNG de , aproximadament un creixement de sis vegades, i una foto JPEG de a 3840x2160 produeix un PNG de , aproximadament 3,3 vegades. Per a imatges de color pla com captures de pantalla i icones, el JPEG ja s'adapta malament al contingut i els seus fitxers tendeixen a ser més grans per a una qualitat equivalent, així que el PNG del mateix contingut creix de manera menys dramàtica. La implicació pràctica és directa, si la mida del fitxer de sortida importa per al teu cas, convertir un JPG a PNG empitjora la situació, no la millora.
Transparència, la capacitat enfront del contingut
El PNG admet un transparència de 8 bits com a característica del format, on un fitxer pot incloure valors d'opacitat per píxel que van de 0 (totalment transparent) a 255 (totalment opac). Quan un JPG es converteix a PNG tornant a codificar a través del motor d'imatge de la plataforma, el PNG resultant queda totalment opac, amb cada píxel a un valor alfa de 255, perquè el JPG d'origen no tenia cap informació de transparència per començar. El format PNG està a punt per contenir dades de transparència, el fitxer simplement no en conté cap, perquè no n'hi havia cap a l'origen. Afegir transparència a la imatge requereix un processament a part, ja sigui emmascarar el fons en un editor o fer servir un pas automàtic d'eliminació de fons. Una eina d'eliminació de fons entrenada per identificar el subjecte pot produir un PNG amb alfa real posant a zero els valors alfa dels píxels del fons després de la conversió.
Gestió de les metadades EXIF
El procés de tornar a codificar treu les metadades EXIF, IPTC i XMP de la sortida PNG a tots els navegadors. Això vol dir que les coordenades GPS, el model de càmera, la data de captura, els textos de copyright i qualsevol camp XMP personalitzat presents al JPG d'origen s'eliminen. Els perfils de color ICC segueixen un camí lleugerament diferent, on Chrome i Safari conserven l'etiqueta de perfil sRGB ICC a la sortida i Firefox la treu juntament amb la resta de metadades. El resultat pràctic és una sortida segura per a sRGB a tots els navegadors, però els perfils de gamma àmplia com Display-P3 o Adobe RGB es perden al Firefox. Per a la majoria d'usos web i de compartició, treure les metadades és útil, ja que redueix una mica la mida de sortida i elimina les dades d'ubicació de les fotos. Per a fotografia professional o fluxos de treball d'arxivament on les metadades incrustades s'han de preservar, gestiona la cadena de metadades amb una eina dedicada abans o després de la conversió de format.
La privadesa a la pràctica
On passa la conversió depèn del nombre de fitxers. Per a una sola imatge, cap dada surt del navegador, i és verificable en temps real. La xarxa es manté inactiva durant una sola conversió. La llista queda buida durant la codificació. Per a dos dels teus fitxers o més, RoundCut els envia al nostre servidor, que converteix, comprimeix el resultat i retorna un enllaç de baixada. Aquest enllaç i els fitxers convertits s'esborren en unes 2 hores. El camí de la teva imatge corre del tot al teu dispositiu, fora de la xarxa, mentre que el camí per lots ho canvia per la comoditat de convertir molts fitxers de cop. Per a imatges amb contingut delicat, com la captura d'un document personal o una foto amb dades d'ubicació, convertir d'una en una manté tot en local.