一、 介紹
TIFF全名 tag image file format,是一種基于標志域的圖形。
TIFF圖像是靠指針連接來組織數(shù)據(jù)的,文件頭和數(shù)據(jù)可以任意數(shù)據(jù)的存儲。TIFF由四種類型:TIFF-B,二色;TIFF-G,黑白灰度;TIFF-P,帶調(diào)色板的彩色圖形;TIFF-R,適合RGB色彩的圖形。
二、 組成
TIFF一般來說由四部分組成:文件頭、文件目錄、目錄內(nèi)容、圖像數(shù)據(jù);如下圖,下面具體說明。

三、 具體格式
1. 文件頭部分
文件頭部分有8個字節(jié),格式為:
0 2 4
II/MM(表示字節(jié)序) |
42(版本號) |
文件目錄在整個文件的偏移量,是一個指針,指向IFD的開始部分 |
5 8
注意這里的值不一定就是緊接頭后的0A地址,可以是任意的。
2. 文件目錄部分
0 2 14
IFD的總項數(shù) |
項1(12個字節(jié)) |
項2。。。。(12個字節(jié)) |
下一個IFD的開始地址(用于保存多個文件) |
每個項的12個字節(jié),其是連續(xù)的,有前兩個字節(jié)說明其項的總數(shù)。對于不同的TIFF格式文件,這里的不同。
3. 目錄項
每個目錄項由12個字節(jié)組成,格式如下:
TAG(2個字節(jié)) |
TAG的數(shù)據(jù)類型 |
數(shù)據(jù)長度 |
數(shù)據(jù)值或值的偏移(文件范圍) |
TAG的值由TIFF標準定義;不同的TAG表示不同的意思,例如0X0100表示圖像的寬度。
TAG的數(shù)據(jù)類型表示數(shù)據(jù)值的類型;例如使用long類型來表示寬度。
數(shù)據(jù)長度是以數(shù)據(jù)類型為單位的,真正的數(shù)據(jù)長度是:數(shù)據(jù)長度*sizeof(數(shù)據(jù)類型)
數(shù)據(jù)值或值的偏移:如果數(shù)據(jù)長度小于4個字節(jié),一般直接以該字段來表示其值,如果其值大于4個字節(jié),就指定一個文件范圍的偏移地址,從那里開始的“數(shù)據(jù)長度*sizeof(數(shù)據(jù)類型)”個字節(jié)表示該標志的值。
4. 圖像數(shù)據(jù):
緊接上面數(shù)據(jù)之后就是圖像數(shù)據(jù)了;圖像數(shù)據(jù)的存儲形式有不同的形式,有以像素位來存儲的,也有以顏色面來存儲的;具體的存儲方式在目錄項中定義。
四、 一些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 |
每帶的行數(shù) |
279 |
117 |
每帶中壓縮之后的數(shù)據(jù)字節(jié)常長度 |
284 |
11C |
每個分量(R,G,B)是怎么存儲的,1表示按照RGBRGB的順序來存儲 |
296 |
128 |
Xresolution和Yresolution的單位 |
更多的參考TIFF標準
五、 一個TIFF文件格式分析

為了保證圖片的寬度,不得不將一些文字折行。