Portable Bitmap Format (.pbm)
Netpbm 標準Portable Bitmap Format (PBM) 是 Netpbm 套件中基本的 1 位元黑白圖形格式,專為極致的簡單性、人類可讀性以及程式化產生而設計。
檢查與中繼資料
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 PBM 檔案:
位元組層級標頭簽章(檔案簽章)
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 PBM 檔案:
十六進位簽章(偏移量 0):
50 31 / 50 34ASCII 表示法: P1 / P4
標準化: Netpbm 程式庫標準
技術規格
| 容器架構 | 指定寬度、高度與 1 位元像素陣列的 ASCII (P1) 或二進位 (P4) Netpbm 格式 |
| 壓縮 | 未壓縮的原始二進位或 ASCII 字元表示法 |
| 位元組序 | 大端序位元封包(在 P4 二進位模式下) |
| 色彩空間 | 單色(1 位元黑白) |
| 色版與結構 | 1 通道 1 位元單色(0 = 白色,1 = 黑色) |
| 最大尺寸 | 實際上無限(ASCII 數字尺寸字串) |
| 透明度 | 無 |
| 串流與漸進式 | 依序逐列串流播放 |
技術比較矩陣:PBM 對比競爭格式
| 技術屬性 | PBM (目前) | PGM | PPM | BMP |
|---|---|---|---|---|
| 色彩深度 | 1 位元單色(僅限黑白) | 8 位元至 16 位元灰階 | 24 位元至 48 位元 RGB 色彩 | 1 位元至 32 位元 RGBA |
| Netpbm 同系列格式 | PBM (Portable Bitmap) | PGM (Portable Graymap) | PPM (Portable Pixmap) | 非 Netpbm 格式 |
| 檔案簽章(magic bytes) | P1 (ASCII) / P4 (二進位) | P2 (ASCII) / P5 (二進位) | P3 (ASCII) / P6 (二進位) | BM (0x42 0x4D) |
| 主要用途 | OCR 與傳真文件處理 | 醫療造影與灰階 | 電腦圖學教育 | Windows 桌面圖形 |
常見損壞模式與十六進位修復指南
圖片顯示時出現水平列扭曲或遺失像素。
根本原因: ASCII 標頭中存在格式錯誤的註解或遺失空白分隔符號。
修復: 使用 File2File.app Netpbm 轉換器驗證標頭格式與換行符號。
安全性分析與解析器攻擊向量
讀取 ASCII 尺寸字串的 PBM 解析器若尺寸超過平台限制,容易受到整數溢位影響。
已知攻擊向量
- 在寬度乘以高度的位元緩衝區配置期間發生整數溢位。
- 讀取格式錯誤的 ASCII 空白串流時發生緩衝區過度讀取。
- 透過微小檔案中過大的尺寸宣告導致阻斷服務。
防禦最佳實務: 限制 PBM 的最大允許尺寸,並在解碼前驗證位元緩衝區邊界。
歷史起源與里程碑
1993Netpbm 將 PBM、PGM 與 PPM 整合為在 Unix 和其他系統上使用的可攜式圖片工具。
1991引入 PBM 二進位模式,檔案簽章(magic bytes)為「P4」,以提升儲存效率。
1988Jef Poskanzer 發明了 PBM(檔案簽章為「P1」),以便透過電子郵件網路傳輸點陣圖。
主要優勢與優點
- 其精簡的結構可以讓基本的 PBM 讀取器與寫入器實作起來很簡單,不過程式碼長度取決於語言與需求。
- ASCII 模式 (P1) 100% 具備人類可讀性,可以在記事本等標準文字編輯器中建立或編輯。
- PBM 可用於某些圖片處理、電腦視覺與 OCR 工作流程,特別是在需要簡單單色點陣圖的情況下。
技術限制與缺點
- 嚴格限制為 1 位元單色(沒有灰階或色彩)。
- ASCII 模式效率極低,每個圖片資料位元都需要使用一個位元組的 ASCII 文字(「0」或「1」)。
- 缺少中繼資料、色彩描述檔或圖層支援。
有趣的技術冷知識
- 在 ASCII PBM(「P1」)中,白色像素以「0」表示,黑色像素以「1」表示(這與現代 RGB 慣例相反)。
- 您實際上只要在文字檔案中輸入「P1 2 2 1 0 0 1」並儲存,就能建立有效的 PBM 圖片。
- 發明此格式是為了讓電腦科學家能夠透過 Usenet 新聞群組分享掃描文件。
常見技術問題
PBM、PGM 和 PPM 之間有什麼區別?
PBM 是 1 位元單色(僅限黑白)、PGM 是灰階(各種深淺的灰色),而 PPM 是完整的 24 位元 RGB 彩色。
PBM 檔案中的 P1 和 P4 代表什麼?
「P1」表示圖片以純文字 ASCII 儲存,而「P4」表示圖片以精簡的二進位位元組儲存。
如何將 PBM 檔案轉換為 PNG?
您可以在您的瀏覽器中使用 File2File.app,直接將 PBM 檔案轉換為現代的 PNG 或 JPG 圖片,無需將資料上傳到任何伺服器。