Notes de l'équipe sur l'artisanat, les formats et les petites décisions derrière un bon résultat.
Le conteneur sans perte, ce que le PNG stocke
Le PNG s'appuie sur DEFLATE, un algorithme de compression sans perte. Il stocke les valeurs RVBA de chaque pixel exactement telles que fournies, applique un filtre réversible à chaque ligne de balayage, puis compresse l'ensemble avec une variante de zlib. Sans perte signifie que les valeurs de pixels décompressées sont identiques octet pour octet aux originales. Dans le cas JPG vers PNG, les originales sont les pixels produits quand le navigateur décode le JPEG. Ces pixels décodés reflètent déjà toutes les approximations que le JPEG a faites lors de son encodage d'origine. Le PNG stocke donc fidèlement les pixels approchés, pas la scène réelle. Mesuré, un JPEG de 17 Ko en 1024x768 donne environ 105 Ko en PNG, et un JPEG de 116 Ko en 3840x2160 grossit à près de 384 Ko. Ces multiples tiennent à peu près selon les types de contenu, car le rapport suit la résolution, pas le niveau de qualité JPEG. Le conteneur sans perte est précieux pour ce qu'il empêche, la dégradation ultérieure, pas pour ce qu'il restitue.
Pourquoi la qualité JPEG ne peut pas être récupérée
La compression JPEG écarte l'information définitivement. L'encodage applique une transformée en cosinus discrète à des blocs de 8x8 pixels, quantifie les coefficients de fréquence obtenus vers un ensemble plus réduit, et stocke ces valeurs quantifiées. L'étape de quantification est à sens unique. Un coefficient qui valait 47 et a été arrondi à 50 ne peut pas être ramené à 47 ensuite. Aucune trace de la valeur d'origine ne survit dans le fichier. Quand le navigateur décode le JPEG, il reconstruit les pixels à partir des coefficients quantifiés, qui sont des approximations des valeurs d'origine. Réencoder ces pixels approchés en PNG produit un enregistrement sans perte des approximations, donc le PNG est une représentation parfaite de l'image dégradée. Ce n'est pas une limite du PNG ni de cet outil. C'est une propriété fondamentale de la compression avec perte. L'information écartée à l'encodage est définitivement perdue. Améliorer la qualité JPEG suppose de repartir de l'original non compressé ou du fichier RAW.
Croissance de taille mesurée
Le rapport de taille du JPG au PNG varie selon le contenu de l'image mais suit un schéma prévisible. Les images photographiques aux variations tonales complexes grossissent le plus. La transformée du JPEG est réglée précisément pour ce contenu et atteint de hauts taux de compression. L'encodeur sans perte du PNG ne peut pas rivaliser sur des données de pixels bruitées. Les mesures de test de cet outil montrent qu'une photo JPEG de 17 Ko en 1024x768 produit un PNG de 105 Ko, soit environ six fois plus. Une photo JPEG de 116 Ko en 3840x2160 produit un PNG de 384 Ko, soit environ 3,3 fois plus. Pour le contenu plat comme les captures d'écran et les icônes, le JPEG est déjà mal adapté. Ses fichiers tendent à être plus lourds à qualité équivalente. Le PNG du même contenu grossit donc moins fortement. La conséquence pratique est directe, si la taille de sortie compte pour votre usage, convertir un JPG en PNG aggrave la situation, au lieu de l'améliorer.
Transparence, la capacité face au contenu
Le PNG prend en charge une transparence 8 bits. Un fichier PNG peut inclure des valeurs d'opacité par pixel allant de 0 (entièrement transparent) à 255 (entièrement opaque). Quand un JPG est converti en PNG, le PNG obtenu est entièrement opaque, chaque pixel ayant une valeur alpha de 255. Le JPG source n'avait aucune information de transparence au départ. Le format PNG est prêt à contenir des données de transparence, le fichier n'en contient simplement aucune, car aucune n'était présente dans la source. Ajouter de la transparence à l'image demande un traitement distinct, soit masquer l'arrière-plan dans un éditeur, soit une étape automatique de suppression d'arrière-plan. Un outil de suppression d'arrière-plan repère le sujet et produit un PNG avec un vrai canal alpha. Il met à zéro les valeurs alpha des pixels de fond après la conversion.
Gestion des métadonnées EXIF
Le pipeline de réencodage retire les métadonnées EXIF, IPTC et XMP de la sortie PNG dans chaque navigateur. Cela signifie que les coordonnées GPS, le modèle d'appareil, la date de prise et les textes de copyright sont supprimés. Tout champ XMP personnalisé présent dans le JPG source l'est également. Les profils couleur ICC suivent un chemin différent. Chrome et Safari préservent la balise de profil ICC sRGB dans la sortie. Firefox la retire avec toutes les autres métadonnées. Le résultat pratique est une sortie sûre en sRGB sur tous les navigateurs. Les profils à large gamut comme Display-P3 ou Adobe RGB sont perdus dans Firefox. Pour la plupart des usages web et de partage, le retrait des métadonnées est utile. Il réduit un peu la taille de sortie et retire les données de localisation des photos. Pour la photographie professionnelle ou les flux d'archivage, les métadonnées intégrées doivent être préservées. Gérez la chaîne de métadonnées avec un outil dédié avant ou après la conversion de format.
La confidentialité en pratique
L'endroit où la conversion a lieu dépend du nombre de fichiers. Pour une seule image, aucune donnée ne quitte le navigateur, et c'est vérifiable en temps réel. Le réseau reste inactif pendant une conversion unique. La liste reste vide pendant l'encodage. Pour deux fichiers ou plus, RoundCut les envoie à notre serveur, qui convertit, compresse 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 d'une seule image tourne entièrement sur votre appareil, hors du réseau. Le chemin par lot l'échange contre le confort de convertir beaucoup de fichiers d'un coup. Pour des images au contenu sensible, comme la capture d'un document personnel ou une photo avec des données de localisation, convertir une par une garde tout en local.