Format de données
Le format des données est la manière utilisée en informatique pour représenter des données sous forme de nombres binaires. C'est une convention (éventuellement normalisée) utilisée pour représenter des données, soit des informations représentant un texte, une page, une image, un son, un fichier exécutable, etc. Lorsque ces données sont stockées dans un fichier, on parle de format de fichier. Une telle convention permet d'échanger des données entre divers programmes informatiques ou logiciels, soit par une connexion directe soit par l'intermédiaire d'un fichier. On appelle interopérabilité cette possibilité d'échanger des données entre différents logiciels.
Sommaire |
[modifier] Typologie
On distingue un format dont la spécification est publiquement accessible, un format ouvert, d'un format fermé dont la spécification est secrète. Un format fermé correspond généralement à un logiciel seul capable de pleinement l'exploiter.
Une autre distinction s'opère entre un format normalisé, faisant l'objet d'une normalisation par une institution publique ou internationale (ISO, W3C) et un format quelconque, qui peut devenir un standard de fait s'il est populaire. Un tel format est parfois normalisé par la suite comme OpenDocument.
Un format est dit propriétaire s'il a été élaboré par une entreprise, dans un but essentiellement commercial. Un format propriétaire peut être ouvert (le format PDF d'Adobe par exemple) s'il est publié, ou fermé (le format '.doc' de Microsoft par exemple). Mais même lorsque des spécifications sont rendues publiques, les entreprises à l'origine de formats propriétaires tentent d'en conserver le contrôle à la fois soit en proposant régulièrement de nouvelles versions plus élaborées (contrôle par maintien d'une avance technologique) soit en utilisant des moyens juridiques comme le brevet. Ce type de pratiques anti concurrentielles via des outils juridiques est admise aux États-Unis. Elle est sujette à controverse en Europe (voir Brevetabilité du logiciel).
[modifier] Formats des nombres
[modifier] Nombres entiers
Un nombre entier naturel est en général simplement représenté en binaire (en base 2), avec la règle de conversion classique. À la différence des entiers naturels, les entiers informatiques sont finis. On ne peut donc représenter ainsi que les nombres tenant dans l'intervalle défini par le nombre de bits disponible. Lorsque l'on veut représenter un entier relatif, on réserve un bit pour désigner le signe (en général le bit le plus à gauche) ; on parle alors d'« entier signé ». La plupart du temps, les nombres négatifs seront codés selon la règle du complément à deux.
Par exemple, avec un octet on peut représenter :
- les entiers naturels de 0 (00000000 en binaire) à 255 (11111111 en binaire)
- les entiers relatifs de -128 (10000000 en binaire) à -1 (11111111 en binaire) et de 0 (00000000) à 127 (01111111) ; on code donc avec un octet les entiers de -128 à +127.
On notera que pour comparer deux entiers relatifs codés ainsi, il suffit de réaliser un OU exclusif avec (10000000 en binaire) sur chacun avant le test.
D'autres types sont également usités pour représenter les entiers, il s'agit du codage BCD de forme étendue (un chiffre sur un octet), ou compactée (un chiffre sur 4 bits). Bien que ces formats soient moins performants pour des calculs que le système binaire décrit supra car ils nécessitent des instructions supplémentaires pour remettre en forme le résultat des opérations arithmétiques réalisées, ils sont toujours employés sur de nombreux systèmes (Ordinateur central, SGBD, ... ) et gérés par les processeurs, car ils ne sont pas limités par le nombre de bits utilisés par le processeur pour l'arithmétique binaires (8 bits, 16 bits, 32 bits, 64 bits, ...) et qu'ils conservent la précision unitaire contrairement aux nombres à virgule flottante.
[modifier] Nombres fractionnaires
Pour les nombres fractionnaires, la convention de numération veut qu'en base n, « 0,a » désigne a·1/n (=a·n-1), « 0,0a » désigne a·1/n² (=a·n-2)... Par exemple en base 10 (n = 10), « 0,005 » désigne 5·10-3.
Ainsi, le nombre 0,001 en binaire (n = 2) désigne 1·2-3=0,125.
Donc en informatique, la première solution consiste à attribuer un certain nombre de bits à droite aux puissances négatives de 2.
Une autre solution consiste à utiliser le codage BCD comme pour les entiers en considérant le positionnement de la virgule à une position fixe, par exemple, pour un codage sur 10 chiffres, les huit premiers chiffres contiennent la partie entière et les deux derniers la partie décimale. Ce positionnement est totalement arbitraire et doit être géré par le programmeur pour les affichages ou les calculs, surtout pour les multiplications ou lorsque deux nombres ne sont pas définis avec le même nombre de chiffres après la virgule.
C'est ce type de donnée qui est généralement utilisé dans les SGBD pour le type DECIMAL.
[modifier] Formats de texte
Les textes sont formés de caractères en nombres finis (lettres, diacritiques, signes de ponctuation…). Il est donc simple d'attribuer un nombre à chaque caractère. Cette conversion caractère → nombre est définie par convention sous la forme d'une table, ou page de code. Les plus utilisés sont l'ASCII et l'Unicode.
Les textes comprennent aussi de la mise en page (alignement des paragraphes) et de la mise en forme (type de police de caractère, taille…). La solution retenue en général consiste à définir des mots de commande, des instructions, séparées du texte par un caractère spécial. Ainsi, en HTML, les instructions sont appelées « balises » et sont mises entre des chevrons <…>
; en LaTeX, les instructions sont introduites par une barre de fraction inversée \
. De ce fait, certains caractères sont réservés aux instructions et ne peuvent plus faire partie du texte ; il existe alors des « codes d'échappement », ou bien des instructions spéciales permettant de les représenter.
Jusqu'en 2006, le logiciel Microsoft Word a retenu une autre manière de stocker la mise en forme: les données (texte et images) sont mises en brut (sans mise en forme) dans le document, et la mise en forme est définie dans une partie du document appelée « saut de section » (section break). Le saut de section, hormis le fait de marquer un changement de mise en page (saut de colonne, saut de page), est une zone invisible contenant des pointeurs attribuant un formatage à une partie de la section. Cette solution de stockage brut des données a été historiquement adoptée à une époque où peu d'autres solutions existaient (au début des années 1980). C'était une approche couramment adoptée pour beaucoup d'applications et liée entre autres au niveau faible de standards de stockage. Cependant, l'expérience a montré que cette approche se révèle très lourde et source de problèmes (corruption de documents) pour les documents ayant environ 100 pages et plus. Si Microsoft a tenté de conserver son modèle et de le faire évoluer petit à petit pour éviter de tout reprendre à la base, ce dernier est arrivé à ses limites. Pour son édition de 2007, Microsoft a adopté un nouveau format propriétaire, Open XML.
[modifier] Formats d'image
La base de la représentation des images est la géométrie analytique.
[modifier] Format carte de points
On peut découper une image en points élémentaires, ou « pixel », et attribuer une couleur à ce pixel. La couleur est représentée par un nombre, la correspondance couleur → nombre étant faite par une « palette ».
Il est inutile de donner les coordonnées des points : si l'on donne la largeur de l'image en nombre n de points, alors les n premiers points représentent la première ligne, les points n+1 à 2n représentent la deuxième ligne… Il suffit alors de fixer par convention l'ordre de balayage, en l'occurrence l'ordre de lecture occidental (de gauche à droite et de haut en bas).
Ceci donne une image au format carte de points, souvent appelée image bitmap. C'est donc un canevas de points dont chacun se voit attribuer une valeur colorée. Les grandes différences entre les formats existants sont la profondeur de couleurs (1 bit : noir ou blanc, 8 bits : 256 couleurs, 24 bits : 16 millions de couleurs…) et le type de compression (sans compression, ou raw, avec une compression par motifs, avec une compression destructive…)
Par exemple, prenons une carte noir et blanc (1 pour blanc, 0 pour noir) définissant une image large de cinq points par la suite de chiffres suivante :
1000101010001000101010001
il faut découper cette carte par groupes de 5 bits :
10001 01010 00100 01010 10001
ce qui nous donne le dessin d'un « X » blanc sur fond noir.
Le format des données doit donc inclure, outre la liste des points, la largeur de l'image et la description de la palette ; ceci se fait en général en début de fichier (on parle d'« en-tête » de fichier).
[modifier] Format vectoriel
Une image au format vectoriel est une image qui se décrit par des ensembles de coordonnées mathématiques et non par un canevas de points. Par exemple,
- pour décrire une ligne il suffit de connaître ses coordonnées de départ et d'arrivée ;
- pour un rectangle (ayant ses axes alignés aux axes du système de coordonnées en cours), deux points suffisent aussi (deux coins opposés)
- pour un cercle, un seul point, ainsi qu'un rayon, sont nécessaires.
En outre, des informations sur le tracé sont nécessaires : les attributs graphiques sont l'épaisseur, le style (continu ou pointillés), la couleur du trait, sa transparence, etc.
Une image vectorielle est donc un ensemble de coordonnées, d'attributs et de commandes que le programme d'affichage (à l'écran ou sur papier) se charge d'interpréter.
Pour des images pouvant être réduites facilement à des formes géométriques (typographisme, cartographie...), le format vectoriel est extrêmement économe.
La particularité des formats vectoriels réside dans le fait que leur rendu final ne dépend que de la résolution du périphérique de sortie. Ce type d'image peut aussi être agrandi sans effets gênants ; il n'y a pas d'effet de « pixellisation » (les lignes diagonales ou courbes n'apparaissent pas sous forme d'escalier).
Quelques formats vectoriels célèbres : VML, SVG, Adobe PDF (Acrobat), Adobe Illustrator, encapsuled postscript EPS, Quark QXD, Silverlight et Macromedia Flash (formats d'animation vectorielle), AutoCAD DXF.
[modifier] Représentation des couleurs
[modifier] Formats vidéo
[modifier] Format de scène 3D
La représentation des objets virtuels créés par les logiciels de modélisation 3D nécessite un format de données spécifique car les formats précédents sont inadaptés. En effet, pour représenter un objet 3D il faut au minimum une description :
- de la topologie de l'objet : sa forme, sa taille et sa complexité
- des attributs de représentation : couleurs, textures (nature et position), qualité photométrique de sa surface, transparence
- de ses attributs dynamiques s'il est animé : capacité de collision avec d'autres objets, articulations et contraintes, etc.
Représenter une scène nécessite aussi de spécifier les éclairages utilisés, les positions relatives des objets, les effets d'environnement éventuels mais surtout sa structure hiérarchique (liens des éléments entre eux).
Les premiers formats standard de fait ont été des formats adaptés à la CAO : l'objet est défini à l'aide de facettes ou de surfaces analytiques. Il suffit de définir son origine puis les coordonnées caractéristiques des éléments dans l'espace à 3 dimensions. Par exemple, dans le format DXF d'Autocad, un objet est une suite d'entités nommées et constituées de liste de points X, Y, Z. Par indexation, on constitue des facettes triangles ou des lignes qui s'appuient sur ces points.
Si ce format était suffisant pour du dessin technique il était totalement inadapté à la réalité virtuelle. Dans les années 1990, la société Silicon Graphics (constructrice de station graphique 3D) publia le format Inventor qui comportait la majorité des éléments nécessaires. Ce format évolua vers le format VRML qui a été normalisé.
Par ailleurs, le format 3D Studio ASCII fut lui aussi publié mais l'explosion du marché de la 3D donna naissance à quantité de formats propriétaires. Pour l'utilisateur, le problème était fréquemment de convertir un modèle d'un format à l'autre sans perdre trop d'informations. Des sociétés se sont même spécialisées dans ce type de conversion.
Actuellement, dans le monde professionnel, il n'y a pas de format unique mais plutôt des formats plus ou moins utilisés selon le type d'application. Par exemple :
- format Blender pour la création Multimédia
- format Pro/Engineer pour la CAO industrielle
- format OpenFlight pour la simulation de vol et/ou de conduite.
Néanmoins, la plupart des modeleurs 3D savent plus ou moins bien lire (Import) et créer (Export) plusieurs formats : c'est un critère de choix important. Parmi les formats les plus répandus on peut citer :
- BLEND de Blender
- 3DS
- DXF d'Autocad
- IGES normalisé
- X Direct 3D
- OBJ de Wavefront
- LWO de Lightwave
- VRML avec ses versions (1, 2 et X3D)
- .COB de Truespace
La tendance actuelle est de privilégier un format descriptif de type XML. Le format de données 3D est alors appelé langage descriptif comme X3D (évolution du VRML avec un formatage XML).
Le format libre COLLADA permet également d'échanger des données entre différents logiciels. Il existe notamment un importeur/exporteur pour Blender.
[modifier] Format de son
Les formats de son se décomposent en trois parties:
- les formats bruts: le son n'est pas compressé, les valeurs issues de la conversion des valeurs analogiques en numérique (échantillonnage) sont enregistrées dans l'ordre chronologique et par canal;
- les formats compressés: le son est compressé avec ou sans pertes suivant un algorithme adapté à la perception des sons de l'oreille humaine et/ou une compression classique;
- les formats de flux (stream): permet l'écoute par partie sans avoir la totalité du fichier.
(Voir le chapitre Formats classiques)
[modifier] Compression des données
La compression des données est la technique qui consiste à transformer les données afin qu'elles prennent moins de place. Les données devant être décompressées avant d'être traitées, ceci se fait aux dépens de la rapidité, et avec un risque plus grand de perte de données.
L'idée de base est qu'en général, des éléments se répètent dans les fichiers. On a donc intérêt à représenter les éléments se répétant souvent par des nombres plus petits (c'est-à-dire prenant moins de bits).
On peut distinguer deux types de compression :
- les compressions sans a priori sur les données : ce sont des algorithmes qui travaillent uniquement sur les nombres, quelle que soit l'information portée par ces nombres ; ils sont donc généraux, pas spécifiques aux données ; on peut distinguer :
- les algorithmes à table stockée : l'algorithme fait une première analyse pour repérer les éléments se répétant, et construit une table de correspondance avec un code raccourci pour chaque élément répétitif ; la taille occupée par la table de stockage fait que ce procédé est plutôt adapté aux gros fichiers ;
- les algorithmes à table construite à la volée : la table de correspondance est construite de manière systématique, sans analyse préalable du fichier ; elle peut être reconstruite à la volée à partir du fichier compressé ; c'est par exemple le cas de l'algorithme de Lempel-Ziv-Welch (LZW)
- les compressions spécifiques aux données : si l'on connaît les données, on peut optimiser l'algorithme ; par exemple si l'on sait que l'on a affaire à un texte, on peut se baser sur la fréquence d'utilisation des mots dans le langage ; on distingue deux sous-catégories :
- les compressions sans perte d'informations ;
- les compressions avec perte de données : la première idée est de faire un « sous-échantillonnage », c'est-à-dire de simplement dégrader la qualité des données
en étudiant les sens et la manière dont le cerveau interprète les informations, on peut dégrader certaines caractéristiques des données peu sensibles, donc sans trop altérer la qualité globale des données ; ainsi, si l'oreille humaine est peu sensible à certaines gammes de fréquences, on peut dégrader (voire supprimer) certaines parties du spectre et pas d'autres (MP3);
les algorithmes de compression d'image (JPEG) et de film (MPEG) utilisent une perte de qualité.
[modifier] Formats classiques
Catégorie | Formats |
---|---|
Images | PNG, MNG, TIFF, JPEG, GIF, TGA, OpenEXR, BMP |
Dessin vectoriel | VML, SVG, Silverlight, Flash, AI, EPS, DXF |
3D | XCF, BLEND, SKP, (SKB), DXF, 3DS Max, VRML, X3D, IFC |
Son | OGG, FLAC, MP3, WAV, WMA, AAC |
Vidéo | MPEG, OGM(DVD, DivX, XviD), AVI, Theora, FLV |
Page | PDF, PostScript, HTML, XHTML |
Document de traitement de texte | ODT, TXT, DOC, RTF |
Exécutable | BIN, ELF, EXE, .sdc |
Archives (fichier compressé) | 7Z, TAR, GZIP, ZIP, LZW, ARJ, RAR, .sdc |
Archives pour bandes dessinées | CB7 (.cb7), basé sur 7z CBA (.cba) basé sur ACE CBR (.cbr) basé sur RAR CBT (.cbt), basé sur TAR CBZ (.cbz), basé sur ZIP |
[modifier] Voir aussi
[modifier] Articles connexes
- Alternatives ouvertes aux formats fermés
- Extension de nom de fichier
- Format ouvert
- ISO
- Standard
- Théorie des types
- W3C
[modifier] Liens externes
- Wotsit.org - The Programmer's File and Data Resource
- Dotwhat.net - File extension and format information
- Magic signature database - Standard file format information and FFID registry
- Format wars File formats for websites and print explained
- File signatures (aka magic numbers) found in files to indicate their file type
- PRONOM technical registry
- Library of Congress file format information
- Intoduction to Uniform Type Identifiers
- Game File Format Central - A large and expanding list of detailed descriptions of game-related file-formats
- BIEW Binary vIEW project