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

常見位圖檔案格式內部結構探秘:BMP、PCX、TIFF、GIF、PNG、JPEG

     編輯:關於C++

從第一台 PC 起,筆者便對電腦如何用 0/1 存儲複雜圖像著迷。位圖檔案將重現圖像所需的所有資訊編碼為位元組序列,不同格式有各自的編碼規則。本文淺析 PC 上最常見的六種位圖格式,幫助讀者理解圖像資料在磁碟上的真實面貌。

BMP (Windows Bitmap)

  • Windows 原生格式,副檔名 .bmp 或 .rle (RLE 壓縮)
  • 支援 1/4/8/16/24 位色深,24 位可達 1600 萬色
  • 結構四部分:檔案頭、資訊頭、調色盤(1/4/8位)、像素資料
  • 像素儲存順序:左→右,下→上;每行 4 位元組對齊
  • 16/24 位無調色盤,像素直接存 RGB;支援 RLE 壓縮

PCX (ZSoft Paintbrush)

  • 早期 PC 標準格式,副檔名 .pcx
  • 三部分:128 位元組檔案頭、RLE 壓縮像素資料、可選 256 色調色盤
  • 支援 1/4/8/24 位色深,從 CGA/EGA 延伸至 VGA/真彩色
  • 結構簡單,但已逐漸淡出主流

TIFF (Tagged Image File Format)

  • 副檔名 .tif,結構最複雜但最靈活
  • 8 位元組檔案頭 (IFH) 指向影像檔案目錄 (IFD)
  • IFD 由 70 多種標籤組成,儲存寬高、調色盤、像素資料等
  • 支援多圖像、多種壓縮 (RLE, LZW 等),LZW 需授權
  • 跨平台首選,但讀寫程式相容性常有問題

GIF (Graphics Interchange Format)

  • Compuserve 開發,副檔名 .gif,廣泛用於網頁
  • 版本 GIF87a/GIF89a,13 位元組檔案頭 + 全域/區域調色盤
  • LZW 壓縮,最多 256 色,支援多幀動畫、透明、文字註解
  • 專利授權問題 (Compuserve/Unisys) 曾限制普及

PNG (Portable Network Graphics)

  • 為替代 GIF 而生,發音 "ping"
  • 繼承 GIF 優點,支援真彩色、Alpha 通道
  • 採用 LZ77 衍生演算法 (Deflate) 壓縮,免專利費
  • 現代網頁無損圖像首選格式

JPEG (Joint Photographic Experts Group)

  • 副檔名 .jpg/.jpeg,專為照片類真彩色圖像設計
  • 有損壓縮:犧牲不可察覺細節換取高壓縮率 (常達 50%+)
  • 流程:8×8 區塊 → DCT 離散餘弦變換 → 量化 → 無損編碼
  • 量化因子決定品質/大小平衡,需針對圖像調整
  • 不適合銳利邊緣、文字、簡單圖形 (無損壓縮更佳)

總結對比

格式壓縮色深特色適用場景
BMP無/RLE1-24位Windows原生,結構簡單Windows開發、中間檔
PCXRLE1-24位早期標準,結構簡單舊系統相容
TIFF多種1-48位極度靈活,可擴展專業印刷、跨平台交換
GIFLZW≤8位(256色)動畫、透明、網頁通用簡單動畫、圖示、網頁
PNGDeflate1-48位+Alpha無損、免專利、支援透明網頁圖像、截圖、需透明場景
JPEG有損24位高壓縮、照片效果佳數位相片、網頁照片

理解各格式內部結構,有助於選擇適合專案需求的儲存方案,也能在開發圖像處理軟體時避開常見陷阱。

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