SDL logo

C. Drocourt

drocourt@iut-amiens.fr

TD02 - Les formats en images

logo iut

Les formats

bmp (BitMaP) :
Lorsqu'une palette est utilisé, elle est représentée par une succession de 4 octets, chaque quadruplet représentant un élément de la palette sous la forme bleu, vert, rouge, réservé.
Le format BMP a été développé conjointement par Microsoft et IBM, il peut être compressé en RLE ou pas. Il est composé de la structure suivante :

Header du fichier :

PNM (portable anymap file format)
:
Le format  PNM (portable anymap file format) a été créé par Jef Poskanzer et se décline en plusieurs sous formats :
- PBM : 1 bit par pixel, noir et blanc.
- PGM : 1 octet (ou plus) par pixel, niveau de gris,
- PPM : 1 octet (ou plus) par couleur, RGB.

Le format PNM est en fait un meta-format et regroupe les trois précédents, vous pouvez donc donner a votre fichier plusieurs extensions possibles. Un fichier PNM consiste en un header en mode texte précisant le type de PNM que l'on appelle identifiant (PPM,PGM ou PBM), la taille de l'image et la profondeur qui permet de donner la valeur maximale de la couleur, et permet donc d'utiliser plus d'un octet par couleur (soit plus de 255). On peut insérer des commentaires dans le fichier en commençant une ligne par un dièse (#).
Le fichier commence par P1, P2 ou P3.

gif (Graphic Interchange Format) :
Le format gif a été introduit par compuserve et utilise une compression basé sur l'algorithme LZW. Il utilise une palette d'une taille maximale de 256, ce qui fait qu'une image gif ne peut contenir au maximum que 256 couleurs différentes, par contre l'ensemble de ces couleurs sont choisies a partir des composantes RVB, une couleur spéciale permet de spécifier que le pixel est transparent. Le problème de ce format est qu'il était soumis a plusieurs brevets (il fallait donc payer des royalties), dont le dernier a expiré en aout 2006.

Header du fichier :
png (Portable Network Graphics) :
Ce format a été créé pour contrer le problème de brevet du format GIF, il permet de faire tout ce que fait le gif et meme bien plus. La seule exception est les images animées, pour lesquelles un autre format a été défini : MNG. Le format permet de représenter les images en noir et blanc, quadrichromie, palette, 24 bits, ... Il gère également la transparence par un codage en RVBA (donc mieux que GIF) ou avec une seule couleur de transparence lors de l'utilisation d'une palette. L'algorithme de compression utilisé est gzip.

Header du fichier :
Chaque segment est définit de la manière suivante :

tiff (Tagged Image File Format) :
Le format de fichier tiff appartient a microsoft et Adobe. Il est un peu particulier dans le sens ou il permet un nombre tres important de représentation, compressé ou nom, avec espace de colorimétrie différent, ...). Son format est basé sur l'utilisation de TAG, d'ou son nom.

jpeg (Joint Photographic Experts Group) :
Cette norme définit un format de compression mais non un format de fichier, le format correspondant est le JPEG File Interchange Format (JFIF). Ce format de fichier est basé sur l'utilisation d'un algorithme de compression avec pertes, ce qui signifie qu'une certaine quantité de l'information est supprimée, toutefois, la norme permet de définir le taux de compression, permettant alors a l'utilisateur de réaliser un compromis entre taille et qualité. L'algorithme de compression est relativement complexe, basé sur le découpage de l'image en blocs de pixels, et sur une transformée en Cosinus Discrète (DCT).

Le fichier est constitué de zone, chacune d'entre elles commençant par un "marqueur".

Header du fichier :
Première zone :
Zone de commentaire :

jpeg 2000 :
C'est une évolution du format précédent, il est basé sur l'utilisation de la compression par ondelettes. Son principal interet n'est pas seulement son facteur de compression (meilleur que jpg) mais surtout les extensions possibles liées à ce format.

svg (Scalable Vector Graphics) :
Ce format est un peu particulier dans le sens ou ce n'est pas un format "bitmap", c'est à dire pixels, mais vectoriel. On ne représente plus les pixels un par un, mais par des formes globales. On pourrait ainsi définir ce format comme un language de représentation des images. Voici un exemple de fichier svg :

<?xml version="1.0" encoding="utf-8"?>
<svg
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns:ev="http://www.w3.org/2001/xml-events"
   version="1.1"
   baseProfile="full"
   x="0"
   y="0"
   width="300"
   height="200"
   id="svg2">
  <title>Rectangles</title>
  <defs
     id="defs4" />
  <g
     id="layer1">
    <rect
       width="300"
       height="120"
       x="0"
       y="20"
       fill="green"
       id="rect1306" />
    <rect
       width="80"
       height="150"
       x="20"
       y="30"
       fill="red"
       id="rect1308" />
    <rect
       width="140"
       height="80"
       x="50"
       y="50"
       fill="blue"
       id="rect1310" />
  </g>
</svg>

Cliquez ici pour afficher l'image

Pour toute information complémentaire : http://fr.wikipedia.org

Exercice

- En consultant les documentations internet, vous allez faire un programme capable de détecter l'image passée en argument (pnm, bmp, gif, png, ...).