TIFF: Tag-Based Image File Format, 基於標籤的圖像文件格式。是一種靈活的位圖格式,主要用來存儲包括照片和藝術圖在內的圖像。它最初由Aldus公司與微軟公司一起爲PostScript打印開發。TIFF與JPEG和PNG一起成爲流行的高位彩色圖像格式。TIFF格式在業界得到了廣泛的支持,如Adobe公司的Photoshop、The GIMP Team的GIMP、Ulead PhotoImpact和Paint Shop Pro等圖像處理應用、QuarkXPress和Adobe InDesign這樣的桌面印刷和頁面排版應用,掃描、傳真、文字處理、光學字符識別和其它一些應用等都支持這種格式。從Aldus獲得了PageMaker印刷應用程序的Adobe公司現在控制着TIFF規範。
下圖展示了TIFF文件中可存儲的數據類型及標籤中需要存儲的圖像屬性參數:
格式特點:
1. TIFF可以描述多種類型的圖像,二值圖,灰度圖像,索引圖像,RGB圖像,YCbCr圖像等;
2. TIFF擁有一系列的壓縮方案可供選擇,無壓縮,1維修改霍夫曼編碼;PictBits,LZW,JPEG等;
3. TIFF不依賴於具體的硬件;
4. TIFF是一種可移植的文件格式;
可擴展性:
在TIFF 6.0中定義了許多擴展,他們允許TIFF提供以下通用功能:
1. 前面提到的集中壓縮方法;
2. 多種色彩表示方法;
3. 圖像質量增強;
4. 特殊圖像效果;
5. 文檔的存儲和檢索幫助。
格式複雜:
TIFF文件的複雜性給開發者帶來了一些問題。一方面,要寫一種能夠識別所有不同標記的軟件非常困難。另一方面,一個TIFF文件可以包含多個圖像,每個圖像都有自己的IFD和一系列標記,並且採用了多種壓縮算法。這樣也增加程序涉及的複雜度。
下面就TIFF文件結構做大致描述:
TIFF文件以.tif爲擴展名。其數據格式是一種3級體系結構,從高到低依次爲:文件頭,一個或多個稱爲IFD的包含參數屬性的標籤的目錄和數據。
圖像文件頭信息(Image File Header):8字節頭信息
Bytes 0-1: 字節序標識: 4949.H表示小端字節序;4D4D.H表示大端字節序。
Bytes 2-3:標識任意值,一般取42.H,注意字節序。
Bytes 4-7:指向文件中第一個IFD的偏移量。
圖像文件目錄IFD(Image File Directory):
Bytes 0-1: 前兩個字節代表了此文件文件目錄中有多少個目錄項(Directory Entry).
Bytes 2~12*N+1: 每一個目錄項12字節;其每一項定義如下:
Bytes 0-1:目錄項標籤,用來表示此目錄項的參數屬性;
Bytes 2-3:表示目錄項的數據類型;
Bytes 4-7: 數據域的數據長度,長度以第二項表示的數據類型爲單位;
Bytes 8-11:若數據可以存儲在此域,則爲這個目錄項的對應值,否則爲值在文件中偏移量。
Bytes 12*N+2~12*N+5:下一個IFD在此文件中的字節偏移, 噹噹前的IFD爲文件最後一個IFD時,此域爲0。
關於Directory Entry中的tag詳細信息,可以參考:https://www.loc.gov/preservation/digital/formats/content/tiff_tags.shtml#intro