TIFF圖像文件格式分析
一、 介紹
TIFF全名 tag image file format,是一種基于標志域的圖形。
TIFF圖像是靠指針連接來組織數據的,文件頭和數據可以任意數據的存儲。TIFF由四種類型:TIFF-B,二色;TIFF-G,黑白灰度;TIFF-P,帶調色板的彩色圖形;TIFF-R,適合RGB色彩的圖形。
二、 組成
TIFF一般來說由四部分組成:文件頭、文件目錄、目錄內容、圖像數據;如下圖,下面具體說明。
三、 具體格式
1. 文件頭部分
文件頭部分有8個字節,格式為:
0 2 4
II/MM(表示字節序) |
42(版本號) |
文件目錄在整個文件的偏移量,是一個指針,指向IFD的開始部分 |
5 8
注意這里的值不一定就是緊接頭后的
2. 文件目錄部分
0 2 14
IFD的總項數 |
項1(12個字節) |
項2。。。。(12個字節) | |
下一個IFD的開始地址(用于保存多個文件) |
每個項的12個字節,其是連續的,有前兩個字節說明其項的總數。對于不同的TIFF格式文件,這里的不同。
3. 目錄項
每個目錄項由12個字節組成,格式如下:
TAG(2個字節) |
TAG的數據類型 |
數據長度 | |
數據值或值的偏移(文件范圍) |
TAG的值由TIFF標準定義;不同的TAG表示不同的意思,例如0X0100表示圖像的寬度。
TAG的數據類型表示數據值的類型;例如使用long類型來表示寬度。
數據長度是以數據類型為單位的,真正的數據長度是:數據長度*sizeof(數據類型)
數據值或值的偏移:如果數據長度小于4個字節,一般直接以該字段來表示其值,如果其值大于4個字節,就指定一個文件范圍的偏移地址,從那里開始的“數據長度*sizeof(數據類型)”個字節表示該標志的值。
4. 圖像數據:
緊接上面數據之后就是圖像數據了;圖像數據的存儲形式有不同的形式,有以像素位來存儲的,也有以顏色面來存儲的;具體的存儲方式在目錄項中定義。
四、 一些TAG值
TAG值 |
說明 | |
十進制 |
16進制 | |
256 |
100 |
圖像寬度 |
257 |
101 |
圖像高度 |
258 |
102 |
BitsPerSample,對于RGB是8,8,8,通過偏移來表示 |
259 |
103 |
壓縮方式(1/2/32773),1為不壓縮 |
262 |
106 |
光度滴定,對于RGB圖,該值是2 |
273 |
111 |
帶的偏移,每個帶是不同的 |
277 |
115 |
每像素的顏色成分,對于RGB這個值一般是3,如果需要其他有ExtraSamples標志 |
278 |
116 |
每帶的行數 |
279 |
117 |
每帶中壓縮之后的數據字節常長度 |
284 |
|
每個分量(R,G,B)是怎么存儲的,1表示按照RGBRGB的順序來存儲 |
296 |
128 |
Xresolution和Yresolution的單位 |
更多的參考TIFF標準
五、 一個TIFF文件格式分析
為了保證圖片的寬度,不得不將一些文字折行。