Portable pixmap

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Portable pixmap
Extension .ppm, .pgm, .pbm, .pnm
Type MIME image/x-portable-pixmap, -graymap, -bitmap, -anymap all unofficial
Développé par Jef Poskanzer
Type de format Format de fichier graphique
Origine de XPM

Le portable pixmap file format (PPM), le portable graymap file format (PGM) et le portable bitmap file format (PBM) sont des formats de fichier graphique utilisés pour les échanges. Ils ont été définis et sont utilisés par le projet NetPBM. Ils proposent des fonctionnalités très basiques et sont utilisés pour convertir les fichiers de type pixmap, graymap et bitmap entre différentes plates-formes. Plusieurs applications désignent cet ensemble de trois formats comme le format PNM (portable anymap).

Histoire[modifier | modifier le code]

Le format PBM a été défini par Jef Poskanzer dans les années 1980 comme un format d'images bitmaps monochromes pouvant être transmises via un message électronique en texte ASCII, et leurs permettant de supporter tout changement dans le formatage du texte.

La première bibliothèque d'outils pour gérer le format PBM a été Pbmplus. Elle a été développée par le créateur du format et est sortie en 1988. Elle contenait essentiellement des outils pour convertir les fichiers PBM dans d'autres formats graphiques. À la fin de 1988, Jef Poskanzer avait développé les formats PGM et PPM avec leurs outils associés et les a ajoutés à Pbmplus. La dernière version de Pbmplus date du 10 décembre 1991.

En 1993, la bibliothèque NetPBM a été développé pour remplacer Pbmplus, plus maintenu. Il s'agissait alors simplement d'une reformulation de la Pbmplus, avec les ajouts et correctifs soumis par la communauté.

Composition[modifier | modifier le code]

Les fichiers PBM, PGM ou PPM sont composés sur la même base :

  • Le nombre magique du format : il dépend du format et de la variante (binaire ou ASCII).
  • Un caractère d'espacement (espace, tabulation, nouvelle ligne)
  • La largeur de l'image (codée en caractères ASCII)
  • Un caractère d'espacement
  • La Hauteur de l'image (codée en caractères ASCII)
  • Un caractère d'espacement
  • Les données binaires de l'image :
    • L'image est codée ligne par ligne en partant du haut
    • Chaque ligne est codée de gauche à droite

Toutes les lignes commençant par # sont ignorées.

PBM[modifier | modifier le code]

Ce format de fichier est utilisé pour des images noir et blanc. Un pixel noir est codé par un caractère 1, un pixel blanc est codé par un caractère 0. Un zéro final termine la description de l'image.

Fichier binaire[modifier | modifier le code]

Un fichier pbm binaire a pour nombre magique P4. Dans les données binaires de l'image, les bits sont regroupés par 8 pour former un octet, les bits excédentaires à la fin d'une ligne sont ignorés.

Fichier ASCII[modifier | modifier le code]

Un fichier pbm ASCII a pour nombre magique P1. Dans les données binaires de l'image, les caractères d'espacement à l'intérieur sont ignorés. Aucune ligne ne doit dépasser 70 caractères.

Exemple[modifier | modifier le code]

P1
# Un exemple bitmap de la lettre "J"
6 10
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
1 0 0 0 1 0
0 1 1 1 0 0
0 0 0 0 0 0
0 0 0 0 0 0

PGM[modifier | modifier le code]

Ce format de fichier est utilisé pour des images en niveau de gris. En plus des caractéristiques de largeur et hauteur, une valeur maximale utilisée pour coder les niveaux de gris ; cette valeur doit être inférieure à 65536 (codée en caractères ASCII). Chaque niveau de gris est codé par une valeur entre 0 et cette valeur maximale, proportionnellement à son intensité. Un pixel noir est codé par la valeur 0, un pixel blanc est codé par la valeur maximale.

Fichier binaire[modifier | modifier le code]

Un fichier pgm binaire a pour nombre magique P5. Dans les données binaires de l'image, chaque pixel est codé par 1 ou 2 bytes selon que la valeur maximale est inférieure ou supérieure à 256.

Fichier ASCII[modifier | modifier le code]

Un fichier pgm ASCII a pour nombre magique P2. Dans les données binaires de l'image, chaque pixel est codé par une valeur en caractères ASCII, précédée et suivie par un caractère d'espacement. Aucune ligne ne doit dépasser 70 caractères.

Exemple[modifier | modifier le code]

P2
# Affiche le mot "FEEP" (exemple de la page principale de Netpbm à propos de PGM)
24 7
15
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  3  3  3  3  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0 15  0
0  3  3  3  0  0  0  7  7  7  0  0  0 11 11 11  0  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0
0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

Résultat: Feep netbpm p2 pgm example.png

PPM[modifier | modifier le code]

Ce format de fichier est utilisé pour des images couleur. Chaque pixel est codé par trois valeurs (rouge, vert et bleu). Comme le format PGM, en plus des caractéristiques de largeur et hauteur, une valeur maximale utilisée pour coder les niveaux de couleur ; cette valeur doit être inférieure à 65536.

Fichier binaire[modifier | modifier le code]

Un fichier ppm binaire a pour nombre magique P6. Chaque pixel est codé sur 1 ou 2 bytes selon que la valeur maximale soit inférieure ou supérieure à 256.

Fichier ASCII[modifier | modifier le code]

Un fichier ppm ASCII a pour nombre magique P3. Chaque pixel est codé en caractères ASCII, précédées et suivies par un caractère d'espacement. Aucune ligne ne doit dépasser 70 caractères.

Exemple[modifier | modifier le code]

# Le P3 signifie que les couleurs sont en ASCII, 
P3
# par 3 colonnes et 2 lignes,
 3 2
# ayant 255 pour valeur maximum, et qu'elles sont en RGB. 
255
255   0   0     0 255   0     0   0 255
255 255   0   255 255 255     0   0   0

Résultat: Tiny6pixel.png

Voir aussi[modifier | modifier le code]