9 points par GN⁺ 2025-06-26 | 2 commentaires | Partager sur WhatsApp
  • Le format de fichier PNG fait l’objet d’une révision majeure pour la première fois en 20 ans et retrouve son statut d’antan
  • Cette spécification intègre de nombreuses technologies récentes, notamment la prise en charge du HDR, d’APNG (animation) et des données Exif de manière officielle
  • Le développement a été mené conjointement par de grandes entreprises IT comme Adobe, Apple et Google, ainsi que des acteurs du broadcast
  • La spécification la plus récente est déjà prise en charge par plusieurs logiciels, dont Chrome, Safari et Photoshop
  • D’autres mises à jour sont prévues, avec notamment l’ajout de meilleures technologies de compression et de l’encodage/décodage parallèle

Introduction : le retour du PNG et son importance

  • Le format de fichier PNG a récemment été mis à jour avec une nouvelle spécification, mettant fin à près de 20 ans de stagnation
  • De grandes institutions comme la Bibliothèque du Congrès des États-Unis, Bibliothèque et Archives Canada, ou encore les Archives nationales d’Australie adoptent le PNG comme format officiellement recommandé
  • Grâce à cette nouvelle spécification, le PNG retrouve sa compétitivité sur le marché et démontre sa capacité d’innovation

Nouvelles fonctions et caractéristiques

Une vraie prise en charge du HDR et une compatibilité tournée vers l’avenir

  • Le nouveau PNG propose la prise en charge du HDR (High Dynamic Range)
  • Dans l’image de comparaison entre les espaces colorimétriques Rec. 2020 et Rec. 709, la zone plus large (le triangle extérieur) montre les couleurs qu’une image HDR peut représenter
  • Ces informations HDR ne nécessitent que 4 octets supplémentaires (ainsi que la surcharge habituelle des chunks PNG)
  • Chris Lilley, parmi les auteurs historiques, ainsi que d’autres experts techniques majeurs, ont participé au projet et expliqué clairement ces nouvelles technologies

Reconnaissance officielle d’APNG (PNG animé)

  • Le PNG animé (APNG), d’abord proposé par Mozilla et pris en charge par Firefox, a lui aussi été intégré à la spécification officielle
  • Auparavant limité à certains logiciels, il est désormais largement adopté par divers programmes

Prise en charge officielle des données Exif

  • Exif permet de stocker des métadonnées comme les droits d’auteur, les informations sur l’appareil photo et les données GPS
  • Son utilité est importante pour la création et l’archivage d’images, ainsi que pour la gestion des droits

Améliorations globales et correction d’erreurs

  • La correction des erreurs (errata) et la clarification de la spécification existante ont également été menées

Contexte et processus de développement

  • La dernière spécification PNG remontait à environ 20 ans (soit 3 ans et demi avant la sortie de l’iPhone)
  • Le W3C Timed Text Working Group (normalisation des technologies de sous-titrage) a relancé le développement en soulevant le besoin d’ajouter la prise en charge du HDR au PNG
  • Une fois la proposition formulée, de grands acteurs technologiques comme Adobe, Apple, BBC, Google, MovieLabs et le W3C ont rejoint l’effort commun
  • Un consortium solide s’est formé, transformant le PNG en un format d’image de nouvelle génération
  • Deux mises à jour de suivi sont déjà en préparation

Une adoption déjà très large

  • La dernière spécification PNG est prise en charge par de nombreux logiciels et plateformes, dont Chrome, Safari, Firefox, iOS/macOS, Photoshop, DaVinci Resolve et Avid Media Composer
  • La prise en charge s’étend aussi aux diffuseurs, ainsi qu’au matériel et aux outils associés
  • Les bandeaux d’actualités, bannières de scores sportifs et autres images de diffusion sont des exemples d’usage du nouveau PNG HDR

Prochaines étapes

  • La prochaine édition visera à améliorer encore la compatibilité HDR & SDR
  • En parallèle, des travaux avancent aussi sur des méthodes de compression plus performantes et l’encodage/décodage parallèle
  • La quatrième édition devrait être une mise à jour relativement brève, avant une cinquième édition fondée sur les recherches à venir sur la compression

2 commentaires

 
carnoxen 2025-06-26

Au début, ils ont refusé l’APNG en disant que ce n’était pas une norme officielle pour les images, et ce n’est que maintenant qu’ils le reconnaissent.

 
GN⁺ 2025-06-26
Avis Hacker News
  • L’auteur précise qu’il est impliqué dans le projet et indique que les questions sont toujours bienvenues

    • Il insiste sur le fait que ce PNG n’est pas un format entièrement nouveau, mais une version mise à jour du format existant

    • Il indique que la rétrocompatibilité est très élevée

    • Il explique que même les anciens programmes peuvent lire les nouveaux fichiers PNG aussi bien que possible, et par exemple continuer à reconnaître qu’il s’agit d’une photo de pomme rouge

    • Il résume les points essentiels, car le fonctionnement interne de PNG peut prêter à confusion

      • Un fichier PNG est composé de divers chunks de données
      • Chaque chunk a un nom, ce qui permet à un programme d’ignorer simplement ceux qu’il ne connaît pas ou dont il n’a pas besoin
      • Il précise qu’il n’existe qu’un seul flux d’image
    • Il dit qu’il aimerait voir s’il existe des fichiers d’exemple exploitant les fonctionnalités de la nouvelle spécification PNG, en particulier une page de démo permettant de télécharger directement des animations ou des images HDR pour tester la compatibilité des logiciels

    • Il précise qu’il est favorable aux métaformats et à l’outillage générique

      • Il prend comme exemples des structures comme Office Open XML ou ePub, qu’on peut parser avec de simples bibliothèques zip et XML
      • Il explique d’expérience que PNG a une structure presque similaire à Interchange File Format (ci-après IFF), mais que jusqu’ici des différences subtiles de spécification empêchaient de parser à la fois PNG et les fichiers de la famille IFF avec un parseur IFF totalement générique
      • Il souligne qu’IFF est facile à implémenter et efficace pour la compression de données, mais qu’il n’a été utilisé jusqu’ici que pour des usages limités, comme des données de vieux jeux ou de l’audio AIFF/RIFF, et il pointe la compatibilité incomplète entre PNG et IFF comme l’une des raisons de l’absence d’un outillage générique
      • Il espère que si PNGv3 faisait officiellement des fichiers PNG des fichiers IFF, la popularité de PNG servirait de tremplin à un écosystème IFF générique (par exemple quelque chose comme libiff), qui pourrait aussi servir à définir de nouveaux formats
      • Il mentionne avoir lui-même implémenté un parseur PNG/IFF, et dit qu’il n’est pas simple de modifier PNG pour lui donner une compatibilité IFF tout en préservant la rétrocompatibilité, notamment avec les parseurs matériels
      • Il propose de documenter séparément comme nouveau métaformat standard (IFF 2.0) la structure IFF modifiée utilisée par PNG
      • Il souhaite qu’IFF 2.0 officialise un profil compatible avec PNGv2, ainsi qu’un profil couvrant aussi IFFv1 comme AIFF/RIFF, afin de favoriser un outillage IFF générique
      • Il ajoute que, dans un nouveau profil greenfield adapté aux environnements modernes, on pourrait par exemple introduire des vérifications d’intégrité avec des hachages modernes au lieu de CRC, étendre le jeu de caractères des noms de chunks, et adopter une structure permettant d’encoder efficacement les métadonnées d’attributs de chaque chunk
      • Il estime que ces structures devraient permettre le transcodage à la fois d’IFFv1 et de PNGv2, et qu’une déclaration stratégique de profils, à la manière de la coexistence et de la compatibilité entre HTML4 et XHTML dans HTML5, serait souhaitable
      • En conclusion, il souligne qu’il met davantage l’accent sur les objectifs de conception — minimiser l’hétérogénéité entre anciens et nouveaux formats et élargir l’écosystème d’outils — que sur les détails
  • Dans mon outil de dessin web, j’utilise une astuce qui consiste à stocker la représentation JSON du document dans le champ de commentaire d’un PNG

    • Cela permet d’utiliser directement le fichier enregistré comme image, tout en pouvant le recharger dans l’éditeur

    • Cela évite aussi d’accumuler dans le dossier de téléchargements des fichiers JSON difficiles à identifier

    • C’est amusant, mais il est délicat d’expliquer aux utilisateurs pourquoi le fichier est enregistré en .png, ou pourquoi les données disparaissent s’ils l’ouvrent puis l’enregistrent dans Paint ou ailleurs

    • Krita stocke aussi ses paramètres de pinceau de cette manière, mais cela peut poser des problèmes inattendus quand la quantité de données devient trop importante

    • Macromedia Fireworks utilisait déjà PNG comme format d’enregistrement par défaut il y a 20 ans

      • Bien sûr, à l’époque ce n’était pas du JSON qui y était stocké
    • Beaucoup de frontends de génération d’images par IA font quelque chose de similaire

      • Ils stockent le prompt ou les réglages dans les commentaires de l’image, de sorte qu’ouvrir l’image suffit à récupérer les paramètres, voire à recharger tout le workflow comme dans ComfyUI
      • En réalité, je pense que ce genre de pratique est déjà assez courant dans les outils de traitement d’image
    • Macromedia Fireworks stockait ses fichiers Fireworks dans des PNG,

      • les fichiers Adobe Illustrator (AI) sont en réalité des PDF,
      • et les fichiers PSD de Photoshop peuvent aussi être stockés dans du TIFF
      • C’est pourquoi Photoshop affiche plusieurs calques alors que d’autres logiciels n’en montrent qu’un seul
  • Cette spécification ressemble surtout à une formalisation de quelque chose déjà largement implémenté

    • Même s’il s’agit d’un PNG de nouvelle génération, si cela nécessite un nouveau décodeur on aurait aussi bien pu l’appeler PNG2

    • JPEG-XL remplit déjà la plupart des critères qu’on attend d’un codec sans perte

      • Le problème, c’est la vitesse et les ressources nécessaires pour l’encodage/décodage
    • Aujourd’hui, le meilleur codec d’image sans perte est HALIC

    • D’après ce fil de discussion sur HALIC, LEA 0.5 serait en réalité supérieur

    • Pour être honnête, pendant un moment j’ai ignoré JPEG XL parce que je pensais que c’était seulement pour les « images géantes »

    • J’utilise png dans un outil d’annotation d’images pour la computer vision (XLabel)

      • Cela permet de stocker directement les labels de classes dans les métadonnées de l’image sans avoir à conserver des fichiers texte séparés
      • À l’avenir, j’aimerais créer un format étendu adapté à ce type d’usage
    • La compression sans perte de WebP est parmi les meilleures du secteur, et pourtant elle reste peu utilisée

      • Cela laisse entendre que le vrai défi n’est pas tant d’obtenir la meilleure performance en compression sans perte que de réussir l’adoption dans l’écosystème
    • Les problèmes de vitesse d’encodage/décodage peuvent s’améliorer avec le temps

      • C’est d’ailleurs ce qui s’est réellement produit dans l’écosystème jpg par le passé
  • Le meilleur point, c’est que la prise en charge officielle des données Exif a été intégrée

    • On pouvait déjà écrire des données personnalisées dans l’en-tête auparavant, mais la prise en charge d’Exif est vraiment bienvenue

    • Au passage, il se demande s’il existe dans Exif des champs pour le gyroscope (rotation) ou l’accéléromètre (gravité)

      • Sur les photos prises avec l’application Google Camera, ces informations manquent, ce qui est parfois regrettable pour les corrections automatiques ultérieures ou l’assemblage de panoramas
    • Il existe un champ pour l’accélération (Exif.Photo.Acceleration) et un autre pour l’altitude (Exif.Photo.CameraElevationAngle), mais pas de prise en charge des trois axes

      • Il y a aussi des capteurs environnementaux (conditions ambiantes), mais seulement pour certains éléments précis définis par les auteurs de la spécification
      • Exif.Photo.MakerNote est un espace libre où le constructeur peut stocker les informations qu’il veut, avec une taille suffisante pour enregistrer même des données 9 axes
    • Exif peut introduire de la confusion dans le rendu des images selon la manière dont la rotation est traitée

      • D’anciens et de nouveaux décodeurs peuvent afficher la même image différemment selon qu’ils appliquent ou non la rotation Exif
      • Comme il n’existe pas de recommandation précise pour les décodeurs sur la rotation Exif, des bugs comme les doubles rotations (par exemple traitement à la fois par l’environnement desktop et par la bibliothèque) se produisent souvent
      • Il n’y a qu’une recommandation ambiguë du type « si le décodeur ne peut pas savoir séparément s’il faut faire confiance aux données Exif, alors elles doivent être considérées comme ayant seulement une valeur documentaire »
      • Pour une rétrocompatibilité complète, il pense qu’il faudrait une consigne claire du type « ne jamais effectuer de rotation »
    • Il n’existe pas de champ standard pour enregistrer les données d’accéléromètre ou de centrale inertielle d’un appareil photo

    • En pratique, de nombreux sites web suppriment la majorité des données Exif au moment de l’upload

      • Certains champs peuvent en effet être exploités à des fins de vie privée ou de traçage géographique
    • Personnellement, il aimerait que les gens utilisent XMP plutôt qu’Exif

      • Exif a une structure étrange et revient essentiellement à embarquer une image TIFF à l’intérieur d’un PNG
  • Cette nouvelle spécification PNG formalise officiellement des pratiques déjà largement répandues

    • Le meilleur codec est celui qui fonctionne partout, dans n’importe quelle app, dans le shell de l’OS, via les API, sous Linux, etc.

    • Des formats comme HEIC ou AV1 sont difficiles à prévisualiser si le système d’exploitation ne les prend pas en charge nativement

    • Un format qui ne circule pas correctement ne devrait pas devenir le choix par défaut d’une plateforme

    • Je travaille avec de nombreux formats d’image, y compris des formats rares propres à certains domaines

      • Assurer une véritable prise en charge de tous ces formats est un défi énorme
      • Les bibliothèques annoncent parfois en surface une prise en charge de jpg/tif/heic, mais cela ne signifie pas forcément qu’elles gèrent sans problème un jpeg de 30 Go ou l’ensemble des métadonnées
    • Cette nouvelle spécification peut en fait être encore plus déroutante que HEIC ou AV1

      • Il est impossible de savoir quel codec se trouve dans un PNG avant d’ouvrir le fichier
  • C’est la première fois que je vois HDR utilisé non pas au sens d’une extension claire de la luminosité/plage de contraste, mais au sens de « plus large espace colorimétrique »

  • Je me demande si cela n’arrive pas trop tard

    • Et JPEG XL fournit déjà toutes les fonctions (compression avec ou sans perte, animation, HDR, Exif, etc.) ainsi que des techniques de compression avancées (finite-state entropy, ZStandard, etc.)

    • Je pense qu’il n’y a pas besoin d’une mise à jour distincte de PNG, il suffit simplement d’utiliser JPEG XL

    • Le problème, c’est que le « il suffit de l’adopter » ne fonctionne pas dans la réalité

      • État de la prise en charge navigateur de JPEG XL : après 5 ans, un seul navigateur le prend en charge
      • Si les éditeurs de navigateurs ne l’implémentent pas, les développeurs et les utilisateurs ne peuvent tout simplement pas utiliser un nouveau format
    • À propos de la mention des « techniques de compression avancées (ZStandard, etc.) »

      • ZStandard n’est pas forcément adapté à la compression de nombres ayant des variations régulières, comme des dégradés
      • Bzip2 est meilleur dans ce domaine, et convient mieux quand, comme dans l’exemple, deux variables (boucle interne et externe) correspondent à des canaux de couleur
      • Les données réelles sont plus complexes à cause du bruit, mais ce type de comparaison algorithmique reste malgré tout éloigné de la réalité
    • « Pas besoin de mettre à jour PNG, il suffit d’adopter JPEG XL »

      • Alors il faut en parler à Google
      • En pratique, Google a abandonné la prise en charge de JPEG XL dans Chrome (issue liée), ce qui a bloqué l’expansion de l’écosystème
    • Je ne comprends pas pourquoi on crée encore une autre norme (ou variante)

      • La situation est déjà assez confuse comme ça, et on continue d’ajouter de nouvelles normes sans proposition de valeur vraiment distinctive
  • On va maintenant pouvoir remplacer GIF par APNG (alpha blending + fond transparent + compression sans perte), ce qui pourrait faire revivre l’esthétique web des années 2000

    • Il se demande aussi s’il existe une norme pour l’Animated SVG

      • Il dit avoir déjà vu par le passé des animations SVG basées sur JavaScript, par exemple pour des avatars de chatbot, mais ne sait pas s’il existe un framework standard
    • Animated SVG existe bien

    • Il semble qu’aujourd’hui, à la place des GIF, on utilise davantage de courtes vidéos sans son (par exemple en mp4), car elles se compressent mieux

      • Il se demande si l’Animated PNG reste compétitif face aux formats vidéo comme AV1
    • La plupart des services qui prennent en charge l’upload de GIF ne prennent presque jamais en charge APNG ou animated WEBP

      • Le support backend est pratiquement nul, ce qui est très frustrant
    • Quand on convertit de courtes vidéos en graphismes animés, WEBP était déjà globalement meilleur qu’APNG

      • Si on utilise GIF comme format intermédiaire, APNG reste encore compétitif
      • Aujourd’hui, AVIF est le meilleur choix
    • Il y a quelques années, il a utilisé la bibliothèque Lottie (Bodymovin)

      • On créait des animations dans Adobe After Effects, puis on exportait en svg et json avant de les intégrer facilement sur le web avec lottie JS
      • Il a eu l’impression qu’il manquait de vrais outils ou une bonne DX (expérience développeur) pour les animations web vectorielles
      • Il serait aussi curieux d’avoir des infos sur les outils et la DX côté animated PNG
  • Parmi les affirmations du PR selon lesquelles « beaucoup de programmes prennent déjà en charge la nouvelle spécification PNG »

    • La mention du support d’APNG par Photoshop est erronée

      • Même si la reconnaissance d’APNG apparaît en deuxième point dans la section What’s new, il a été déçu de constater que Photoshop ne le prend pas en charge en pratique
    • Photoshop prend en charge la partie HDR, mais pas la partie APNG

  • Quelqu’un évoque la nécessité pour les logiciels de gérer de manière cohérente l’incertitude sur l’heure et la date

    • Par exemple, un besoin de gérer des informations temporelles floues du type « photo numérisée en 2025, contenu situé autour de Pâques, entre 1920 et 1940 »

    • EXIF comporte un champ DateTimeDigitized

    • Google Photos et Apple Photos permettent de définir directement une date, mais ne l’enregistrent pas réellement dans EXIF

      • Lorsqu’on change de plateforme, les images sans EXIF perdent aussi leurs informations de date