Notes de l'equip sobre artesania, formats i les petites decisions darrere d'un bon retall rodó.
Per què els PNG fotogràfics són tan grans
El PNG promet registrar cada píxel sense perdre'n cap, i aquesta promesa és cara en una foto. Amb milions de tons que es desplacen suaument no hi ha gairebé res perquè el compressor predigui o col·lapsi, així que el fitxer s'infla. Una foto qualsevol de 1600x1200 pot seure a 3 a 5 MB com a PNG, però aquesta mateixa imatge com a JPEG a qualitat 85 cap en 200 a 400 KB. La diferència es redueix a la transformada de cosinus en què s'aguanta el JPEG, que talla la imatge en blocs de 8x8, deixa anar el detall d'alta freqüència que l'ull a penes registra, i empaqueta estretament el que queda. El material de to continu, és a dir gairebé tota la fotografia, encongeix dràsticament. La fidelitat perfecta del PNG es guanya el sou en gràfics plans i feines en curs, però és simplement l'embolcall equivocat per a una foto que penses compartir.
La transparència i el canal alfa
Un canal alfa de 8 bits deixa que un PNG registri qualsevol nivell d'opacitat per píxel, de totalment clar a totalment sòlid. El JPG no ofereix cap camp així, així que la transparència no té on viure. Quan el motor d'imatge reconstrueix un PNG com a JPEG, primer estén la imatge sobre un fons triat, i aquest fons per defecte és blanc, que és exactament per què les regions clares es llegeixen blanques després. La conclusió és contundent, un JPG transparent no pot existir, perquè el format no en té cap concepte. Quan la retallada ha de sobreviure, el WebP o el PNG intacte són les teves úniques rutes. Araluma es decanta pel blanc com a emplenat perquè es barreja amb els documents, les diapositives i les fitxes de botiga on aquests JPG acaben més sovint.
Rendiment de desament mesurat
Tots aquests surten de Chrome 148 en un escriptori Linux, aguantant-se sobre el propi desament JPEG del navegador. A 0,12 MP, una miniatura de 400x300 s'embolica en uns 10 a 15 mil·lisegons. Puja a 0,78 MP, un fotograma de 1024x768, i seu a prop de 13 a 20 mil·lisegons. Una presa de 8 MP a 3840x2160 demana aproximadament 1,4 segons, i fins i tot un monstre de 48 MP a 8000x6000 només reclama uns 1,5 segons. Escriure un JPG d'aquesta manera supera de bon tros escriure un PNG de la mateixa imatge, i deixa del tot enrere l'AVIF, que ha de carregar un mòdul a part i pot esllomar-se 25 segons en aquella imatge de 48 MP fins i tot en un escriptori. Tot plegat, aquest és entre els camins més ràpids d'enlloc de la família de conversió, i no costa res extra de carregar, ja que l'escriptor de JPEG ja viu a cada navegador.
Gestió d'EXIF i metadades
Reconstruir la imatge neteja les etiquetes EXIF, IPTC i XMP del JPG resultant a cada navegador, cosa que escombra les coordenades GPS, el cos de la càmera, la marca de temps de captura, el text de drets d'autor i qualsevol camp personalitzat que el PNG portés. Els perfils de color ICC prenen una ruta a part, on Chrome i Safari conserven el perfil sRGB a la sortida mentre que Firefox l'esborra juntament amb tota la resta. Així el JPG és segur en sRGB a tot arreu, però una etiqueta de gamma ampla com Display-P3 o Adobe RGB no passarà a través de Firefox. Si el teu flux depèn de retenir totes aquestes metadades, gestiona-les amb una eina dedicada després. Per a un ús web i de compartició quotidià, perdre les etiquetes és benvingut, retallant una mica de pes i traient les dades d'ubicació de les teves fotos.
Quan són visibles els artefactes del JPG
El JPEG raona en blocs de 8x8. Deixa anar un salt brusc entre dos colors molt diferents dins d'un bloc i la compressió JPEG només el pot esbossar amb un grapat de termes de freqüència, deixant halos, una aurèola feble de píxels més clars o més foscos abraçant la vora. Les fotografies ho amaguen bé, ja que les seves vores mai són esmoladíssimes i la microvariació del voltant emmascara l'aproximació. Però captures, logotips, caixes amb vores nítides, lletres, o lloses adjacents de color pla l'exposen a qualsevol qualitat, perquè això és precisament el senyal amb què la matemàtica lluita. La regla s'escriu sola, mantingues captures, logotips i material atapeït de text fora del JPG. Deixa'ls en PNG, o passa a WebP per a un fitxer prim que esquiva els halos del tot.
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.