Dans l’article d’aujourd’hui, nous nous intéressons à la structure des formats d’image. Nous examinons leurs objectifs, leurs spécifications et leur normalisation.
Les formats sont un moyen d'empiler les bits d'un fichier. Ces bits représentent les composants d'unobjet numérique. Le format spécifie une méthode pour sauvegarder toutes ces données afin qu'elles puissent être comprises par divers logiciels. Il existe deux fonctions traditionnelles que le format peut spécifier, et une troisième que je présente ici.
- Formats de conteneurs- Tous les formats que nous allons aborder sont, dans une certaine mesure, des formats conteneurs. Cela signifie que le format lui-même spécifie une manière d'enregistrer plusieurs composants dans un seul fichier. La manière exacte d'encoder l'objet multimédia à l'intérieur du conteneur peut être très étroitement contrôlée ou elle peut être spécifiée de manière très vague.
- Formats d'encodage- Certains formats de médias décrivent également des méthodes très spécifiques pour encoder des médias. Le format JPEG, par exemple, fournit un conteneur pour quelques composants différents, mais il décrit principalement les options que vous devez utiliser pour encoder le média. Pour illustrer cela (et rendre les choses un peu plus compliquées), l'encodage JPEG peut également être utilisé par d'autres formats.
- Formats de flux de travail- J'ai inventé ce terme pour décrire les formats qui vont au-delà de ce que nous entendons généralement par formats de conteneur ou d'encodage. Ces formats sont à moitié objet multimédia et à moitié fichier de projet. Ils peuvent contenir plusieurs images et autres médias. Et ils peuvent contenir des instructions spécifiques au programme comme un fichier de projet. Ils peuvent également contenir la sortie finale des images optimisées. Dans la plupart des cas, ces fonctionnalités supplémentaires sont présentées de manière plus spécifique que ce que vous obtenez avec un format de conteneur général.
Un peu de chaque
La plupart des formats de médias visuels spécifient à la fois le conteneur et les méthodes d'encodage, à des degrés divers.
- Les formats sans fonctionnalités de conteneur ne peuvent pas contenir les composants essentiels aux objets multimédias modernes, sauf pour des utilisations très légères. Par exemple, le format GIF est utilisé comme format totalement simplifié pour les images animées. Mais il ne peut pas contenir de métadonnées, de sorte que toutes les informations sur la provenance, les droits et autres ne peuvent pas accompagner le fichier.
- Les formats sans directives d’encodage publiées sont généralement trop fragiles et spécifiques à l’application pour être utilisés en dehors d’un seul programme.
En examinant des formats spécifiques, nous pourrons voir l ’équilibre entre ces deux types de structures.
Spécification de format
De nombreux formats sont dotés d'une spécification écrite. Cela permet à chacun de comprendre comment le format est structuré. En suivant cette spécification, il est possible de créer des fichiers conformes et donc prévisibles. La spécification indique aux développeurs de logiciels où et comment les différents composants d'un fichier sont structurés.
Il n'existe pas de méthode universelle pour rédiger ces spécifications. La plupart d'entre elles comportent un type de récit qui vous aide à comprendre l'objectif du format et comment l'utiliser. Certaines spécifications sont extrêmement détaillées, avec plusieurs dizaines de composants individuels qui sont tous décrits avec précision. Certains formats sont assez vagues, décrivant les composants mais n'offrant pas un niveau de détail élevé.
Certains formats n'ont pas de spécification publiée. De nombreux formats RAW d'appareils photo, par exemple, ne sont pas documentés publiquement. Pour travailler avec ces formats, les développeurs de logiciels doivent déterminer les détails précis de la structure de chaque format. Les développeurs de logiciels utiliseront également des SDK et d'autres bibliothèques pour travailler avec ces fichiers. Comme indiqué ci-dessous, les formats non documentés présentent un risque accru de devenir illisibles à l'avenir par rapport aux formats bien documentés.
Liens vers certaines spécifications de format
Si vous souhaitez vous lancer et lire quelques spécifications de format, j’ai mis des liens vers certaines d’entre elles ci-dessous. Bien qu’elles puissent être difficiles à comprendre, surtout au début, certaines parties seront claires même pour les personnes sans diplôme en informatique. (Vous pouvez commencer par HEIF, car c’est moins intimidant et plus axé sur les objectifs.)
- Le Spécification DNGest très complet et tourné vers l'avenir. Il en est actuellement à sa cinquième version.
- HEIFest beaucoup moins mature, et la spécification le reflète. Mais si vous lisez la première partie de laPage d'informations techniques, vous pouvez voir les objectifs que le format est conçu pour atteindre. Il est également utile de regarder lesExemplessur les pages github.
- Le Spécification TIFFc'est un document complet et bien rédigé - pour 1992, la dernière fois qu'il a été officiellement mis à jour.
- Vidéo -Si vous voulez vraiment vous faire mal au cerveau, jetez un œil àSpécification vidéo MPEG-4. Vous pouvez comprendre pourquoi la vidéo est beaucoup plus difficile à standardiser que les images fixes.
Composants : Spécifiés ou freelance ?
En examinant les formats de fichiers, nous verrons qu'il existe plusieurs façons de répondre aux besoins en composants d'image complexes. Le format TIFF, par exemple, possède une structure extrêmement flexible qui permet d'inclure presque tous les types de composants d'image qu'un développeur de logiciel peut imaginer.
Dans les articles suivants, nous verrons une approche différente lorsque nous aborderons le format DNG. Au lieu d’une approche « tout est permis », le format DNG définit des exigences très spécifiques pour les composants d’image et la manière de les structurer au sein du fichier. (Il permet également une certaine flexibilité, mais indique où et comment y parvenir). L’approche plus formalisée a été rendue nécessaire par la prolifération incontrôlée des variantes de fichiers bruts et la perspective que beaucoup d’entre elles deviennent illisibles.
Je suis convaincu que l’approche plus formalisée des formats de fichiers, telle que celle présentée dans DNG, est la bonne voie à suivre, du moins pour les fichiers bruts. Avec plus de 600 variantes (et ce chiffre ne cesse d’augmenter) déjà disponibles, il est essentiel de mettre de l’ordre dans le processus.
Dans le prochain article, nous nous intéresserons aux SDK et aux bibliothèques. Ces outils permettent aux développeurs d'accéder correctement aux fonctionnalités prises en charge par un format sans avoir à écrire de nouveau code.