| Extension | .ph |
|---|---|
| Type MIME | image/x-portable-anymap |
| Développé par |
Jef Poskanzer (en) |
| Type de format | |
| Origine de |
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 élémentaires et sont utilisés pour convertir les fichiers de type pixmap, graymap et bitmap entre différentes plateformes. Plusieurs applications désignent cet ensemble de trois formats comme le format PNM (portable anymap).
Histoire
Le format PBM a été défini par Jef Poskanzer dans les années 1980 comme un format d'images matricielles monochromes pouvant être transmises via un message électronique en texte ASCII, et 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 .
En 1993, la bibliothèque NetPBM a été développée pour remplacer Pbmplus, qui n'est plus maintenue. Il s'agissait alors simplement d'une reformulation de la Pbmplus, avec les ajouts et correctifs soumis par la communauté.
De nombreux logiciels de dessins l'utilisent en entrée et en sortie : The Gimp, Paint Shop Pro, Krita...
Composition
Les fichiers PBM, PGM ou PPM sont composés sur la même base :
- le nombre magique du format (deux octets) : il indique le type de format (PBM, PGM, ou PPM) et la variante (binaire ou ASCII) ;
- un caractère d'espacement (espace, tabulation, nouvelle ligne) ;
- la largeur de l'image (nombre de pixels, écrit explicitement sous forme d'un nombre en caractères ASCII) ;
- un caractère d'espacement ;
- la hauteur de l'image (idem) ;
- un caractère d'espacement ;
- les données de l'image : succession des valeurs associées à chaque pixel,
- 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 croisillon # sont ignorées (lignes de commentaires).
PBM
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.
Fichier ASCII
Un fichier pbm ASCII a pour nombre magique P1. Dans les données ascii de l'image, les caractères d'espacement à l'intérieur sont ignorés. Aucune ligne ne doit dépasser 70 caractères.
Exemple
P1 # Un exemple bitmap de la lettre "J" 7 10 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0
Exemple de sortie de la commande hd (HEXDUMP)
00000000 50 31 0a 23 20 55 6e 20 65 78 65 6d 70 6c 65 20 |P1.# Un exemple |
00000010 62 69 74 6d 61 70 20 64 65 20 6c 61 20 6c 65 74 |bitmap de la let|
00000020 74 72 65 20 22 4a 22 0a 37 20 31 30 0a 30 20 30 |tre "J".7 10.0 0|
00000030 20 30 20 30 20 30 20 30 20 30 0a 30 20 30 20 30 | 0 0 0 0 0.0 0 0|
00000040 20 30 20 30 20 31 20 30 0a 30 20 30 20 30 20 30 | 0 0 1 0.0 0 0 0|
00000050 20 30 20 31 20 30 0a 30 20 30 20 30 20 30 20 30 | 0 1 0.0 0 0 0 0|
00000060 20 31 20 30 0a 30 20 30 20 30 20 30 20 30 20 31 | 1 0.0 0 0 0 0 1|
00000070 20 30 0a 30 20 30 20 30 20 30 20 30 20 31 20 30 | 0.0 0 0 0 0 1 0|
00000080 0a 30 20 30 20 30 20 30 20 30 20 31 20 30 0a 30 |.0 0 0 0 0 1 0.0|
00000090 20 31 20 30 20 30 20 30 20 31 20 30 0a 30 20 30 | 1 0 0 0 1 0.0 0|
000000a0 20 31 20 31 20 31 20 30 20 30 0a 30 20 30 20 30 | 1 1 1 0 0.0 0 0|
000000b0 20 30 20 30 20 30 20 30 0a | 0 0 0 0.|
000000b9
Fichier binaire
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.
Exemple de sortie de la commande hd (HEXDUMP) de l'exemple précédent
00000000 50 34 0a 23 20 55 6e 20 65 78 65 6d 70 6c 65 20 |P4.# Un exemple |
00000010 62 69 74 6d 61 70 20 64 65 20 6c 61 20 6c 65 74 |bitmap de la let|
00000020 74 72 65 20 22 4a 22 0a 23 0a 37 20 31 30 0a 00 |tre "J".#.7 10..|
00000030 04 04 04 04 04 04 44 38 00 |......D8.|
00000039
PGM
Le 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
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 octets selon que la valeur maximale soit strictement inférieure (1 octet), ou bien supérieure ou égale à 256 (2 octets).
Fichier ASCII
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
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

PPM
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 est utilisée pour coder les niveaux de couleur ; cette valeur doit être inférieure à 65 536.
Fichier binaire
Un fichier ppm binaire a pour nombre magique P6. Chaque valeur est codée sur 1 ou 2 octets selon que la valeur maximale soit strictement inférieure ou bien supérieure ou égale à 256.
Fichier ASCII
Un fichier ppm ASCII a pour nombre magique P3. Chaque pixel est codé en caractères ASCII, précédés et suivis par un caractère d'espacement. Aucune ligne ne doit dépasser 70 caractères. On peut poser une ligne de texte par pixel et sauter une ligne de texte pour chaque ligne d'image.
Exemple
P3 # Le P3 signifie que les couleurs sont en ASCII, et qu'elles sont en RGB. # Par 3 colonnes et 2 lignes: 3 2 # Ayant 255 pour valeur maximum: 255 255 0 0 0 255 0 0 0 255 255 255 0 255 255 255 0 0 0

Autre types de fichiers avec extension .PPM
L'extension .PPM est aussi utilisée par les flipnotes créés sous Flipnote Studio, ce qui peut porter à confusion (celles faites sous Flipnote Studio 3D utilisent l'extension .KWZ)[1],[2],[3].
Voir aussi
- (fr) Page de manuel PBM
- (en) Page de manuel PPM
- (en) Page de manuel PGM
Notes et références
- ↑ (en) « Jaames/flipnote.js : JS library for decoding, converting, and in-browser playback of animations created with Nintendo's Flipnote Studio and Flipnote… », sur GitHub (consulté le ).
- ↑ (en) « PPM format », sur GitHub (consulté le ).
- ↑ (en) « KWZ Format », sur GitHub (consulté le ).
