Notes de l'equip sobre artesania, formats i les petites decisions darrere d'un bon retall rodó.
El contenidor sense pèrdua, què desa el PNG
El PNG s'inclina sobre DEFLATE, un algorisme sense pèrdua. Escriu els valors RGBA de cada píxel exactament, passa primer un filtre reversible sobre cada línia d'exploració, després estreny tot el conjunt amb un flux a l'estil de zlib. Sense pèrdua aquí vol dir que els valors que descomprimeixes són byte a byte els que hi vas posar. En el cas de JPG a PNG, els valors que entren són els píxels que el navegador torna després de descodificar el JPEG, i aquests ja carreguen cada aproximació que va introduir el desament original del JPEG. Així el PNG registra obedientment les aproximacions, no l'escena real que es va fotografiar. Mesurat, un JPEG de 17 KB a 1024x768 aterra prop de 105 KB com a PNG, mentre que un JPEG de 116 KB a 3840x2160 arriba a uns 384 KB. Els múltiples segueixen la resolució més que l'ajust de qualitat del JPEG, per això es mantenen força constants a través del contingut. El contenidor es guanya el seu lloc aturant la davallada, no invertint-la.
Per què la qualitat del JPEG no es pot recuperar
El JPEG desprèn informació per sempre. La seva compressió passa una transformada de cosinus pels blocs de 8x8, arrodoneix els coeficients de freqüència cap avall a un conjunt més groller i desa aquells números arrodonits. Aquell arrodoniment només va en una direcció, així que un coeficient que llegia 47 abans d'encaixar-se a 50 no es pot empènyer mai enrere, i el fitxer no guarda memòria del 47. Descodificar el JPEG reconstrueix píxels a partir dels coeficients arrodonits, que són conjectures dels originals. Embolcalla aquelles conjectures en PNG i obtens una còpia impecable d'una imatge defectuosa. Res d'això és una mancança del PNG ni d'Araluma, simplement així treballa la compressió amb pèrdua, on tot allò que cau en el moment de desar resta caigut. L'únic camí cap a millor qualitat del JPEG és tornar a l'origen sense comprimir o al fitxer RAW.
Creixement mesurat de la mida del fitxer
Quant s'infla un JPG de camí cap a PNG depèn de la imatge, però la tendència és estable. Fotografies atrafegades amb canvis tonals rics creixen més, perquè aquest és el material que el JPEG comprimeix de manera magnífica mentre el codificador sense pèrdua del PNG no pot seguir el ritme amb píxels tan sorollosos. De les pròpies proves d'aquesta eina, una foto JPEG de 17 KB a 1024x768 esdevé un PNG de 105 KB, aproximadament un salt de sis vegades, i una foto JPEG de 116 KB a 3840x2160 esdevé un PNG de 384 KB, aproximadament 3,3 vegades més gran. Material pla com captures de pantalla i icones encaixa malament amb el JPEG d'entrada i sol carregar més pes allà, així que el seu PNG creix de manera menys brusca. La lliçó és clara, si un resultat més petit és el que persegueixes, convertir un JPG en PNG t'empeny en la direcció equivocada.
Transparència, la capacitat enfront del contingut
El canal alfa de 8 bits del PNG és una característica del contenidor, deixant que qualsevol píxel carregui una opacitat de 0 per a totalment net fins a 255 per a totalment sòlid. Quan un JPG es reconstrueix com a PNG a través del motor d'imatge de la plataforma, cada píxel surt a 255, del tot opac, perquè el JPG no tenia cap transparència per passar d'entrada. El PNG resta a punt per emmagatzemar dades d'alfa, el fitxer simplement no en conté cap, ja que cap no existia a l'origen. Posar transparència a la imatge demana una operació a part, ja sigui emmascarant el fons a mà en un editor o executant un eliminador de fons automàtic. Un eliminador ajustat per detectar el subjecte pot lliurar un PNG amb alfa genuí posant a zero l'opacitat dels píxels del fons després de la conversió.
Gestió de les metadades EXIF
Quan el fitxer es reconstrueix, les seves etiquetes EXIF, IPTC i XMP cauen del PNG a tots els navegadors, enduent-se amb elles les coordenades GPS, el cos de la càmera, la data del fotograma, el text de copyright i qualsevol XMP personalitzat que el JPG guardés. Els perfils de color divergeixen una mica. Chrome i Safari guarden l'etiqueta sRGB del que surt, mentre que Firefox la deixa anar juntament amb tota la resta. Així el PNG és segur per a sRGB allà on l'obris, tot i que un perfil de gamma àmplia com Display-P3 o Adobe RGB no aguantarà a través de Firefox. Per al web i la compartició ordinaris, que les etiquetes caiguin és un punt a favor, rasurant una mica de pes i traient les dades d'ubicació de les teves fotos. Per a feina professional o d'arxiu que ha de retenir les seves metadades incrustades, gestiona aquella cadena amb una eina dedicada abans o després de la conversió.
La privadesa i on cau la feina
On cau la feina depèn de la quantitat. Per a una sola imatge, no surt res del navegador, i ho pots comprovar en directe en segons. Obre les DevTools de Chrome, ves al panell de Xarxa, filtra per XHR i Fetch i converteix un fitxer. No apareix res mentre corre la codificació. Per a dos o més, Araluma els envia al nostre servidor, que converteix, agrupa el resultat i retorna un enllaç de baixada. Aquest enllaç i els fitxers convertits s'esborren en unes 2 hores. El camí per a una sola imatge manté tot al dispositiu, fora de la xarxa, mentre que un lot ho canvia per enllestir molts fitxers de cop. Per a la captura d'alguna cosa privada o una foto marcada amb la teva ubicació, convertir d'una en una ho manté a la teva màquina, una diferència real, no un eslògan.