PPM、PGM、PBM三種都是圖像文件格式:
- PPM->Portable PixMap 支持真彩色圖形,可以讀上面所有格式,輸出PPM圖形
- PGM->Portable GreyMap 支持灰度圖形,能夠讀PBM圖形和PGM圖形,輸出PGM圖形
- PBM->Portable BitMap 支持單色圖(1個像素位)
三種文件格式結構相同,都非常簡單,沒有壓縮。由表頭和圖像數據兩部分組成。表頭數據各項之間用空格(空格鍵、制表鍵、回車鍵或換行鍵)隔開,表頭由四部分組成:
① 文件描述子:指明文件的類型以及圖像數據的存儲方式;
② 圖像寬度;
③ 圖像高度;
④ 最大灰度值或顏色值.
其中圖像寬度、高度和最大值這三項是ASCII碼十進制數. 注意,PBM格式的表頭中最大值隱含為1.
表頭的下面是圖像數據區,描述了”寬度×高度”個像素.圖像數據有兩種存儲格式:ASCII和RAWBITS,在文件描述子中指定
各圖像數據之間可用空格隔開.規定每行不超過70個字符.圖像數據內容是:
① PBM文件的圖像數據是0和1二值數據,1代表黑色,0代表白色.
② PGM文件包括的是灰度級數據,0值代表黑色,最大值代表白色.
③ PPM文件包括的顏色數據,0值代表無此顏色,最大值代表顏色為最大.
文件描述子 | 類型 | 編碼 |
P1 | 位圖 | ASCII |
P2 | 灰度圖 | ASCII |
P3 | 像素圖 | ASCII |
P4 | 位圖 | 二進制 |
P5 | 灰度圖 | 二進制 |
P6 | 像素圖 | 二進制 |
PPM文件格式 包括兩個部分,頭部分和圖象數據部分。第一行是P3或P6,說明是PPM 格式;第二行是圖象的寬度和高度,用ASCII來表示;最后一部分是描述像素的最大顏色組成,這里允許描述超過一個字節(0-255)的顏色值。另外可以 在上面三個部分的后面用#來追加注釋,注釋行是從#到該行末。
下面是PPM頭的例子:
例子1:P6 1024 778 255
例子2:P61024 778255
例子3:P6#PPM文件格式1024 778#寬度和高度# 注釋255
PPM圖象數據的格式依賴于PPM自身的表示,如果是P3格式,數據將以ASCII文本來表示,每個像素的值從0到前面的最大值,每行不應該長于70個字 符,如例子4:P3# example from the man page4 4150 0 0 0 0 0 0 0 0 15 0 150 0 0 0 15 7 0 0 0 0 0 00 0 0 0 0 0 0 15 7 0 0 015 0 15 0 0 0 0 0 0 0 0 0
如果是P6格式,圖象數據以字節格式存儲,每個色彩成分(r,g,b)一個字節。僅僅在頭部的最后一個字段的前面才能有注釋,在頭部的最后一個字段后面通常是一個回車或換行。P6圖象文件比P3文件小,讀起來更快。注意,P6文件僅僅用作單字節彩色。
通常的習慣,圖象從上到下,從左到右被存儲。每個像素以一個字節來存儲,0表示黑色,255表示白色。色彩成分按照通常的紅-綠-藍順序來存儲。
PGM文件格式 該格式文件存儲灰度圖形,也就是這里每個像素使用一個值來表示而不是3個(R,G,B)。同PPM唯一不同的是頭部用P2和P5,分別表示用ASCII和 字節碼來表示數據。例如:P224 7150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 00 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 00 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 00 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 00 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PBM文件格式 使用ASCII的0或1方式來表示數據,0表示白色,1表示黑色。與PPM、PGM不同的頭部是少了第三行,因為第三行的最大色彩值在這個模式下已經沒有 意義了。舉例如下:P1# PBM example24 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 00 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 00 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 00 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 00 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0