可移植像素圖格式(PPM),可移植灰度圖格式(PGM)和可移植位圖格式(PBM)是便於跨平台圖像格式。有時候也被統稱為PNM格式[5]

Portable pixmap
副檔名
.pbm, .pgm, .ppm, .pnm
網路媒體型式
image/x‑portable‑bitmap,[1] image/x‑portable‑graymap,[2] image/x‑portable‑pixmap,[3] image/x‑portable‑anymap[4]
開發者Jef Poskanzer英語Jef Poskanzer
格式類型圖像文件格式英語Image file formats
延伸為Portable Arbitrary Map (PAM)英語Netpbm#PAM graphics format
免費格式?

歷史

PBM格式由Jef Poskanzer在20世紀80年代發明,為了便於通過電子郵件,用ASCII碼表示單色位圖,能夠承受一般的文本格式的變動。

第一個處理PBM格式的工具庫是Pbmplus。它由這個格式的發明人Jef Poskanzer開發,在1988年發布。主要包含Jef編寫的將PBM轉化為已存在的其他圖像格式的工具。在1988年末,Jef開發出PGM、PPM格式以及相關工具,並加入Pbmplus中。Pbmplus的最終發布日期是1991年12月10日。

在1993年,Netpbm庫開始開發,用來替代不再維護的Pbmplus。它是Pbmplus的簡單的重新包裝,附加全世界開發者提供的額外功能和修訂,可能是目前用的最普遍的處理PBM、PGM和PPM格式的工具庫。[6]

文件格式描述

這三種格式在顏色的表示上有差異。PBM是單色,PGM是灰度圖,PPM使用RGB顏色。

每個文件的開頭兩個字節(ASCII碼)作為文件描述子,指出具體格式和編碼形式。具體見下表。

文件描述子 類型 編碼
P1 位圖 ASCII
P2 灰度圖 ASCII
P3 像素圖 ASCII
P4 位圖 二進制
P5 灰度圖 二進制
P6 像素圖 二進制

基於ASCII的格式使人可讀,並且能夠很容易的移植到其他格式。但是二進制格式更有效,不僅因為他節約空間,而且因為他更容易被解析(因為很少有空格)

當使用二進制格式的時候,PBM每像素使用一個比特空間,PGM每個像素使用8個比特空間,PPM每像素使用24比特空間(8比特紅色、8比特綠色、8比特藍色)。

PBM例子

下面是一個簡單的例子

P1
# This is an example bitmap of the letter "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

P1表示文件格式。#符號表示一個注釋。接下來兩個數是寬度和高度。接下來的矩陣是每個像素的值。(在這裡單色格式,只有0和1)

PGM例子

P2
6 6
255
0 0 0 150 0 0
0 0 0 150 0 0
0 0 0 150 0 0
0 150 0 150 0 0
0 150 150 150 0 0
0 0 0 0 0 0

PPM例子

P3
4 4
15
0 0 0 0 0 0 0 0 0 15 0 15
0 0 0 0 15 7 0 0 0 0 0 0
0 0 0 0 0 0 0 15 7 0 0 0
15 0 15 0 0 0 0 0 0 0 0 0

16位擴展

P2
6 6
65535
0 0 0 30000 0 0
0 0 0 30000 0 0
0 0 0 30000 0 0
0 0 0 30000 0 0
0 30000 30000 30000 0 0
0 0 0 0 0 0

參考資料

外部連結