Sylvain Mareschal, Ph.D.
Bioinformatics engineer
April 24, 2011 at 16:23
Choisir un format d'images
Nous allons effectuer un petit tour d'horizon des différents formats d'images existants, afin de vous donner des pistes pour choisir le format le plus adapté à vos besoins lorsque le choix se présentera à vous. Cet article n'a pas la prétention d'être exhaustif, mais simplement de vous présenter les formats les plus courants.



1. Image vectorielle, image matricielle

Cet article repose sur la distinction entre images matricielles et vectorielles, car son but premier était d'exposer cette subtilité en vue de présenter les logiciels GIMP et Inkscape, spécialisés respectivement dans les images matricielles et vectorielles. Bien que les termes "vectoriel" et "matriciel" fassent référence à la façon dont les images sont stockées, il est important de bien faire la distinction entre les deux, car on ne peut attendre les mêmes fonctionnalités de ces deux types d'images.

Le type d'image le plus courant est le format matriciel. Comme son nom l'indique, il consiste à stocker l'image sous la forme d'une "matrice", c'est à dire un tableau de pixels, avec pour chaque pixel une couleur particulière. De telles images ont l'inconvénient de se dégrader énormément lorsqu'elles sont redimensionnées, malheureusement le fonctionnement des appareils de capture actuels (appareils photo, scanners ...) et le manque d'efforts de la part des éditeurs de logiciels pour la prise en charge des formats vectoriels les rends incontournables.

Pour une image vectorielle en revanche, ce n'est pas le résultat qui est stocké mais "la recette". On ne définit plus quel résultats afficher à l'écran, mais comment le logiciel doit s'y prendre pour construire l'image que l'on souhaite : dessiner un rectangle avec telles proportions et telle épaisseur de trait, ajouter un triangle rempli de telle couleur à tel endroit ... L'avantage de cette façon de procéder et qu'elle est indépendante de la taille de l'image : un rectangle est un rectangle, que l'on cherche à produire une image de 20 ou 1000 pixels de large, de telles images peuvent donc être redimensionnées beaucoup plus facilement que les images matricielles. En outre, leur poids est indépendant de la taille en pixels que l'on souhaite, ce qui peut être un avantage pour une image destinée à un poster mais un inconvénient pour une image destinée à devenir une icône ... En revanche leur poids dépend de la complexité de l'image à représenter : si ces formats sont parfaits pour stocker des graphiques ou des dessins simples, ils sont peu adaptés aux photographies (bien qu'il existe des algorithmes de vectorisation assez performants).



2. Formats d'image matriciels

Bitmap Un exemple typique de format matriciel est le format Bitmap (.bmp), qui n'est en fait qu'un tableau stockant pour chaque pixel une couleur sous la forme d'un trio de teintes Rouge / Vert / Bleu. De par son âge et sa simplicité, il est lisible et modifiable par 99% des logiciels et affichages s’intéressant aux images. Le stockage des couleurs sous la forme RGB permet de générer plus de 16 millions de couleurs (un octet par teinte, soit 256 puissance 3 possibilités), la limite même des écrans actuels (qui fonctionnent en fait selon le même principe), il s'agit donc d'un format dit "sans perte". Son principal défaut repose dans son poids : étant le format le plus précis, c'est aussi le plus lourd. Il s'agit donc d'un format à privilégier pour stocker des images sans les altérer (des photographies brutes par exemple), mais à bannir pour tout échange (mails, diaporama ou documents écrits). Bien évidemment il est inutile de convertir vos images d'un format compressé vers Bitmap pour les stocker, la perte de qualité n'étant pas réversible.



PNG ou GIFLe format Graphics Interchange Format (.gif) et son homologue libre Portable Network Graphics (.png) reposent sur un principe similaire. La différence avec Bitmap repose dans la définition des couleurs pour chaque pixel dans la matrice : si Bitmap stocke un trio RGB pour chaque pixel, ces formats utilisent une palette. Une table d'association entre le trio RGB de chaque couleur rencontrée dans l'image et un numéro est ajoutée à l'image, permettant ainsi de stocker dans la matrice les numéros, plus courts que les trio RGB. Comparez l'exemple donné pour l'image Bitmap à celle ci-dessus, il s'agit de la même image de 3x3 pixels selon les deux encodages. Si la compression n'est pas particulièrement impressionnante pour cet exemple, imaginez ce qu'elle pourrait être dans le cas d'une image avec seulement deux couleurs sur plusieurs millions de pixels ... A noter que ces formats autorisent une seconde couche de compression particulièrement efficace sur ces tableaux de chiffres, avec les algorithmes classiques de compression qu'on retrouve dans les formats ZIP et 7Z notamment.

Quelques différences subsistent entre ces deux formats : la palette du format GIF est limitée à 256 couleurs tandis que celle de PNG est illimitée (à l'utilisateur de voir si l'utilisation d'une palette reste pertinente lorsqu'elle contient trop de couleurs ...), le format GIF permet des animations que le format PNG ne permet pas (le format Animated PNG est en théorie là pour ça, mais il est très peu connu). Ces formats sont donc à privilégier pour des images simples (typiquement des graphiques ou des dessins à la "Paint"), moins il y a de teintes différentes dans votre image, moins elle sera volumineuse. Pour les images animées, le GIF reste la référence.


Le format Joint Photographic Expert Group (.jpeg ou .jpg) est le format de référence pour le stockage et le partage d'images de qualité photographique, et ce à juste titre. Bien que matriciel, son fonctionnement est beaucoup plus complexe que les formats précédents, je me contenterais donc de renvoyer les plus curieux vers l'explication qu'en donne Wikipedia. On peut se contenter de retenir qu'il s'agit d'un format compressé, et que cette compression a tendance à s'appliquer par plages plutôt que par pixel (ce qui conduit à des images "baveuses" lorsqu'une trop forte compression est utilisée, c'est à dire au mélange des teintes de pixels contiguës). Un autre de ces avantages (quand il est généré par des logiciels graphiques un peu plus évolués que Paint ...) réside en son niveau de compression : vous pouvez fixer vous même le compromis à faire entre qualité et poids de l'image. C'est un format "avec perte" particulièrement adapté aux photographies, la perte y étant peu visible. C'est en revanche un format à bannir pour les images simples comme les graphiques, la perte y étant fortement visible (contours "baveux") et les formats GIF et PNG étant bien plus performants dans cette situation.


Citons enfin Tagged Image File Format (.tiff), format développé en collaboration avec Microsoft très prisé chez Apple et Adobe (le trio infernal du logiciel propriétaire donc). Ce format est un peu particulier, car il s'agit en fait d'un format d'encapsulation : il ne définit pas un type de compression qui lui soit propre comme le font BMP, PNG, GIF et JPG, mais n'est qu'un conteneur pour des images compressées avec l'une de ces technologies (entre autres). En théorie cette grande souplesse permet de stocker de la même façon des images compressées par des algorithmes différents (et donc le plus adapté à chaque image), en pratique tous les logiciels ne gèrent pas toutes les possibilités du TIFF, et cette grande flexibilité est la source de failles de sécurité plutôt inquiétantes si l'on en croit Wikipédia ... Ce n'est donc pas un format que je recommande.


Pour terminer avec les formats matriciels, rappelons simplement que la plupart des logiciels graphiques ont leurs formats propres : .psd pour Photoshop, .xcf pour GIMP par exemple. Si vous en venez à modifier une image, le format le plus sûr pour éviter les pertes est encore d'utiliser le format du logiciel graphique que vous utilisez ... S'agissant probablement d'un format similaire à Bitmap (avec éventuellement une phase de compression), il aura l'avantage de sauvegarder également vos calques et préférences. Bien évidemment certains de ces formats sont propriétaires, et vous pourriez être amené à le regretter le jour où vous souhaiteriez changer de logiciel graphique ...



3. Images vectorielles

En ce qui concerne les images vectorielles, le format qui tend à s'imposer est le Scalable Vector Graphics (.svg). Ce format repose sur le langage XML, un langage qui stocke les informations sous forme de balises hiérarchisées (HTML et xHTML sont des langages dérivés de XML également), chaque élément utilisé pour réaliser la figure (rectangles, cercles, courbes de Bézier ...) étant représenté par une balise avec différents attributs (position, couleur, épaisseur de trait ...). C'est le format par défaut de Inkscape, il est également lisible par certains navigateurs internet (Opera, Firefox et Internet Explorer 9 d'après ce que j'ai pu lire dernièrement). Comme nous l'avons vu précédemment, il s'agit donc d'un format à privilégier pour les graphiques, dessins simples ou images destinées à être redimensionnées dans de vastes proportions (posters par exemple). Malheureusement la conversion de formats matriciels traditionnels (GIF, JPG ...) vers SVG est rarement possible, il s'agit donc d'un choix à faire dès le départ.


On peut également citer parmi les formats vectoriels le Portable Document Format (.pdf) d'Adobe, véritable couteau suisse des formats puisqu'il peut contenir tout et n'importe quoi, dont des images vectorielles justement. Inkscape est capable de générer ses images au format PDF, mais également PowerPoint (les dernières versions tout du moins) et ses homologues libres OpenOffice Impress et OpenOffice Draw. Bien que développé par Adobe, il s'agit d'un format ouvert (c'est à dire que ses spécifications sont publiées, et donc n'importe quel développeur peut rendre son logiciel compatible avec ce format sans avoir à "tricher" ou payer des droits) qui a de nombreux avantages, entre autres d'être lisible sur à peu près n'importe quelle machine et d'être assez léger lorsqu'il est produit intelligemment. C'est un format que je recommande chaudement, mais plutôt pour les documents et diaporama que pour les images, sauf si l'interopérabilité est votre objectif (SVG étant moins connu).


Bien évidemment les formats .ppt, .pptx et .odp générés par les logiciels cités ci-avant peuvent intégrer des images vectoriels, mais dans la mesure où ce sont avant tout des formats destinés à des diaporama, je ne vous les conseille pas pour stocker des images. Ils sont en outre assez approximatifs, n'importe qui ayant fait l'expérience d'ouvrir un document PowerPoint avec OpenOffice ou l'inverse vous le confirmera ...



Voila qui conclut ce tour d'horizon des formats d'images. Il en existe bien d'autres, mais je me suis contenté de lister ceux que j'utilise fréquemment. J'espère que ces explications vous inciteront à faire bon usage de ces formats, ce que peu de gens semble capable de faire aujourd'hui ...

Les informations présentes dans cet articles proviennent principalement de mon expérience personnelle et des pages que Wikipedia dédie à chacun de ces formats.