Notes de l'équipe sur l'artisanat, les formats et les petites décisions derrière un bon recadrage rond.
Le conteneur sans perte, ce que le PNG stocke
Le PNG s'appuie sur DEFLATE, un algorithme sans perte. Il écrit les valeurs RVBA de chaque pixel exactement, passe d'abord un filtre réversible sur chaque ligne de balayage, puis comprime le tout avec un flux de type zlib. Sans perte signifie ici que les valeurs que vous décompressez sont, octet pour octet, celles que vous avez mises. Dans le cas JPG vers PNG, les valeurs qui entrent sont les pixels que le navigateur rend après avoir décodé le JPEG, et ils portent déjà chaque approximation que l'encodage JPEG d'origine a introduite. Donc le PNG consigne fidèlement les approximations, pas la scène réelle qui fut photographiée. Mesuré, un JPEG de 17 Ko en 1024x768 atterrit près de 105 Ko en PNG, tandis qu'un JPEG de 116 Ko en 3840x2160 atteint environ 384 Ko. Les multiples suivent la résolution plutôt que le réglage de qualité JPEG, ce qui explique qu'ils restent à peu près stables selon le contenu. Le conteneur gagne sa place en enrayant le déclin, pas en l'inversant.
Pourquoi la qualité JPEG ne peut pas être récupérée
Le JPEG largue l'information pour de bon. Sa compression passe une transformée en cosinus sur des blocs de 8x8, arrondit les coefficients de fréquence vers un ensemble plus grossier, et stocke ces nombres arrondis. Cet arrondi ne va que dans un sens, donc un coefficient qui lisait 47 avant d'être verrouillé à 50 ne peut jamais être repoussé, et le fichier ne garde aucune mémoire du 47. Décoder le JPEG reconstruit les pixels à partir des coefficients arrondis, qui sont des suppositions sur les originaux. Enveloppez ces suppositions dans du PNG et vous obtenez une copie sans défaut d'une image défaillante. Rien de tout cela n'est une lacune du PNG ou d'Araluma, c'est juste ainsi que travaille la compression avec perte, où tout ce qui tombe à l'encodage reste tombé. La seule route vers une meilleure qualité JPEG est de revenir à la source non compressée ou au fichier RAW.
Croissance de taille mesurée
De combien un JPG enfle sur le chemin du PNG dépend de l'image, mais la tendance est stable. Les photographies chargées aux riches glissements de tons grossissent le plus, car c'est le matériau que le JPEG comprime à merveille tandis que la compression sans perte du PNG ne peut suivre le rythme sur des pixels aussi bruités. D'après les propres tests de cet outil, une photo JPEG de 17 Ko en 1024x768 devient un PNG de 105 Ko, environ six fois plus, et une photo JPEG de 116 Ko en 3840x2160 devient un PNG de 384 Ko, à peu près 3,3 fois plus. Le matériau plat comme les captures d'écran et les icônes s'accorde mal au JPEG dès le départ et y pèse en général davantage, donc son PNG grossit moins fortement. La leçon est nette, si vous courez après une sortie plus légère, transformer un JPG en PNG vous pousse du mauvais côté.
Transparence, la capacité face au contenu
Le canal alpha 8 bits du PNG est une fonction du conteneur, laissant chaque pixel porter une opacité de 0 pour entièrement clair à 255 pour entièrement plein. Quand un JPG est reconstruit en PNG via le moteur d'image de la plateforme, chaque pixel ressort à 255, entièrement opaque, car le JPG n'avait aucune transparence à transmettre au départ. Le PNG se tient prêt à stocker des données alpha, le fichier n'en contient simplement aucune, puisqu'il n'y en avait pas dans la source. Mettre de la transparence dans l'image demande une opération à part, soit masquer l'arrière-plan à la main dans un éditeur, soit lancer un détoureur d'arrière-plan automatique. Un détoureur réglé pour repérer le sujet peut livrer un PNG avec un vrai alpha en mettant l'opacité des pixels de fond à zéro après la conversion.
Gestion des métadonnées EXIF
Quand le fichier est reconstruit, ses balises EXIF, IPTC et XMP tombent du PNG dans chaque navigateur, emportant les coordonnées GPS, le boîtier, la date de prise, le texte de copyright et tout XMP personnalisé que le JPG tenait. Les profils colorimétriques divergent un peu. Chrome et Safari gardent la balise sRGB sur ce qui sort, tandis que Firefox la laisse partir avec tout le reste. Donc le PNG est sûr en sRGB où que vous l'ouvriez, même si un profil à large gamut comme Display-P3 ou Adobe RGB ne survit pas à Firefox. Pour le web et le partage ordinaires, laisser tomber les balises est un plus, cela rogne un peu de poids et retire les données de lieu de vos photos. Pour le travail professionnel ou d'archivage qui doit garder ses métadonnées intégrées, gérez cette chaîne avec un outil dédié avant ou après la conversion.
La confidentialité et où le travail atterrit
L'endroit où le travail atterrit dépend de la quantité. Pour une seule image, rien ne quitte le navigateur, et vous pouvez le vérifier en direct en quelques secondes. Ouvrez les DevTools de Chrome, passez au panneau Réseau, filtrez par XHR et Fetch et convertissez un fichier. Rien n'apparaît pendant l'encodage. Pour deux fichiers ou plus, Araluma les envoie à notre serveur, qui convertit, regroupe le résultat et renvoie un lien de téléchargement. Ce lien et les fichiers convertis sont supprimés en environ 2 heures. Le chemin pour une seule image garde tout sur l'appareil, hors du réseau, tandis qu'un lot l'échange contre le fait de boucler beaucoup de fichiers d'un coup. Pour la capture de quelque chose de privé ou une photo marquée de votre position, convertir une par une la garde sur votre machine, une vraie différence, pas un slogan.