常見圖片格式簡單分析總結--JPG、PNG、GIF、BMP

1、JPG文件格式:

(1)JPG = “段” + 經過壓縮編碼的圖像數據

什麼是‘段’?段是一種數據結構,主要是來控制一段數據怎樣存儲和表示,段的結構如下:

  =  段標識  +  段類型  +  段長度  +段內容          (其中文件頭和文件尾屬於沒有‘段長度’和‘段內容’的特殊的段)

     (2)‘段標識’是一種固定的符號--“FF”,段的類型有30種,其中有10中是每個JPG圖片中必須存在的,其餘的都是可選的類型,在此,我們就那10中類型加以說明,如下:

                 【1】D8 ---- 文件頭   【2】D9 --- 文件尾  【3】FE --- 註釋  【4】C0 --- 幀開始  【5】C1 --- 幀開始

                 【6】C4 --- 定義Huffman表  【7】DA --- 掃描行開始  【8】DB --- 定義量化表 【9】DD---定義重新開始間隔

                 【10】E0 --- 定義交換格式和圖像識別信息

      

          因此,一般的JPG格式的圖片通過十六進制的文件磁盤內容查看器發現:文件頭爲:FF D8  ,而且通常在此之後都有FF E0(其後一般接JFIF)來表明圖像識別信息和交換格式,文件尾爲:FF D9。

2、PNG文件格式:

(1)文件結構如下:

PNG文件 =  PNG標識  +  數據塊   + 數據塊  + ……  + 數據塊(其中數據塊的個數最少是4)

(2)PNG標識是固定的,以十六進制表示爲:【89  50  4E  47  0D  0A  1A  0A】,對應的符號爲:【 ‰  P  N  G  .  .  .  . 

           數據塊分析如下:

       PNG文件 -  PNG標識  =   IHDR  + 可選數據塊  +  PLTE  +  可選數據塊  +  IDAT  +  可選數據塊  +  IEND 

分別說明如下:

【1】IHDR數據塊,文件頭數據塊,在一個PNG文件裏只能有一個。

【2】PLTE數據塊,調色板數據塊,它僅與索引彩色圖像有關,其中,‘索引圖像’是指--一種把像素值直接作爲RGB調色板下標的圖像。

【3】IDAT數據塊,圖像數據塊,存儲實際的圖像數據,在數據流中包含多個連續順序的圖像數據塊。

【4】IEND數據塊,圖像結束數據塊,表示--數據流已結束,放在文件的末尾。

以上的數據塊都是以自己的名字作爲開頭來控制一段數據。其中,結尾數據塊IEND的內容固定:

【00  00  00  00  49  45  4E  44  AE  42  60  82】,對應的符號如下:

【.   .    .    .   I   E   N   D  (後四位爲CRC校驗碼)】


3、GIF文件格式:

(1)文件的單位是數據塊,文件的結構如下:

GIF文件  =  文件頭  +  GIF數據流  +  文件結束塊

GIF數據流  =  控制塊  +   成像塊   +  特殊用途塊

(2)文件頭大小爲6個字節,而且【文件頭  =  標識符(3字節) +  版本(3字節)】,其中,標識符爲“GIF”,版本一般是“87a”或者“89a”。

文件結束塊是一個單字節的數據塊,它指示數據流的結束,值爲“0x3B”,符號是“;”。

注意:GIF文件中的每個數據塊都有一個塊尾記錄,大小爲1個字節,同樣也是“0x3B”。

4、BMP文件格式:

(1)文件結構如下:

BMP文件 =  文件頭信息塊  +  圖像描述信息塊  +  顏色表  +  圖像數據區

(2)關於文件頭信息塊,0000--000D,其中,【0000--0001】爲2個字節的文件標識“BM”,【0002--0005】爲4個字節的文件大小的值,【0006--0009】爲4個字節的保留值,分別爲【00 00 00 00】,【000A -- 000D】爲圖像數據區的起始位置(偏移量),它的值等於前三個內容的大小的和。

另外,幾個比較重要的位置有:【000A---000D】圖像數據的起始位置,【0022--0025】圖像數據的大小,【000E--0011】圖像描述信息塊大小,【0012--0015】圖像寬度,【0016--0019】圖像高度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章