首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

圖像文件格式深度探秘:BMP、PCX、TIFF 結構與特性全解析

     編輯:VC 教學

引言:從 0 和 1 到綿麗圖像的旅程

早在 DOS 時代,雜誌刊登的 BASIC 程式碼中那些密密麻麻的 DATA 語句,就讓我對「數據如何構成圖像」產生濃厚興趣。歷經 ASCII、文字處理格式,最終來到位圖存儲技術——它將計算機眼中的「0 和 1」轉化為螢幕上綿麗的日落、人像、介面。本文將帶你走進六大主流位圖格式內部,揭開它們如何編碼像素、組織元數據、平衡壓縮與相容性的奧秘。

一、BMP —— Windows 原生格式的標準範本

1.1 文件結構四層架構

典型 8-bit (256 色) BMP 結構如下:

+------------------+
| BITMAPFILEHEADER |  14 bytes  ← 文件類型、大小、數據偏移
+------------------+
| BITMAPINFOHEADER |  40 bytes  ← 寬高、色深、壓縮、解析度
+------------------+
|   RGBQUAD[256]   | 1024 bytes ← 調色盤:索引→RGB 映射
+------------------+
|   Pixel Array    | 變長       ← 索引值(每像素 1 byte),按行從下往上存
+------------------+

1.2 關鍵特性

  • 色深彈性:1/4/8/16/24/32-bit,最高 1677 萬色(24-bit)或 42 億色(32-bit 含 Alpha)。
  • RLE 壓縮:支援 BI_RLE8 (8-bit) 與 BI_RLE4 (4-bit),連續同色像素以「計數+顏色」編碼,適合簡單圖示。
  • 行對齊:每行 4 字節邊界,不足補 0。
  • OS/2 相容:Windows 可讀 OS/2 BMP(不同資訊頭與調色盤格式)。

1.3 高色深無調色盤模式

16-bit (5:5:5 或 5:6:5)、24-bit (8:8:8)、32-bit (8:8:8:8) 直接儲存 RGB 值,無調色盤,像素大小固定,解碼最快。

二、PCX —— 曾經的 PC 圖像標準

2.1 三段式結構

+------------------+
|   PCX Header     | 128 bytes 固定長度:版本、編碼、寬高、色深、調色盤資訊
+------------------+
|  RLE Pixel Data  | 變長:單行編碼,標誌位 0xC0 判斷「計數+像素」或「原始像素」
+------------------+
|  Palette (opt)   | 768 bytes (256×3) 僅 8-bit 模式存在,置於文件尾
+------------------+

2.2 歷史與演進

  • ZSoft Paintbrush → Microsoft Paintbrush → Windows 內建
  • 早期針對 CGA/EGA,後擴充支援 VGA、True Color
  • 今日雖淡出主流,但舊檔案轉換、掃描儀輸出仍常見

三、TIFF —— 靈活到「難以駕馭」的跨平台王者

3.1 基於 Tag 的模組化架構

+------------------+
|   8-byte Header  | 魔數 "II"/"MM" (小/大端) + IFD 偏移
+------------------+
|   IFD (Image     | 標籤表:每個 Tag = (TagID, Type, Count, Value/Offset)
|  File Directory) |  70+ 標準 Tag:寬高、壓縮、調色盤、像素數據、灰階曲線...
+------------------+
|   Data Blocks    | 由 Tag 指向的實際數據區(可多圖像、多條帶、多平面)
+------------------+

3.2 複雜性來源

  1. Tag 爆炸:基線 70+,擴充無上限,私有 Tag 導致軟體間不互通。
  2. 多圖像/多條帶:單文件可存金字塔縮圖、多頁文檔、不同壓縮區塊。
  3. 壓縮百花齊放:RLE、LZW、JPEG、ZIP、CCITT Group 3/4… 完整讀寫器需全支援。
  4. LZW 專利陰影:歷史上需向 Unisys 付費,導致眾多免費軟體不敢內建解碼。

3.3 為何仍是跨平台首選?

無損、高動態範圍、任意元數據、任意色彩空間(CMYK、Lab、ICC Profile),印刷出版、科學影像、歸檔領域無可替代。

四、其餘三大格式速覽

格式全稱核心特徵典型應用
GIFGraphics Interchange FormatLZW 壓縮、256 色、支援動畫/透明網頁小圖示、簡單動畫
JPEGJoint Photographic Experts GroupDCT 有損壓縮、YCbCr、品質可調數位相片、網頁圖片
PNGPortable Network GraphicsDeflate 無損、Alpha 通道、Gamma 校正UI 圖示、截圖、需透明場合

五、總結與選型建議

  • Windows 內部互傳、簡單編輯 → BMP (無壓縮) 或 PNG (無損壓縮)
  • 網頁傳輸、相片分享 → JPEG (高壓縮比) / PNG (需透明)
  • 專業印刷、醫學/科學影像、長期歸檔 → TIFF (彈性、元數據豐富、無損)
  • 舊系統維護、掃描儀輸出 → PCX / GIF

理解格式內部結構,不僅能寫出健壯的讀寫器,更能在壓縮率、速度、相容性三角中做出最佳工程決策。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved