2 | TGA文件格式分析
TGA文件格式分析
關于TGA的簡介:
TGA文件格式的結構比較簡單,屬于一種圖形,圖像數據的通用格式,在多媒體領域有著很大影響,是計算機生成圖像向電視轉換的一種首選格式。
TGA圖像格式最大的特點是可以做出不規則形狀的圖形、圖像文件,一般圖形、圖像文件都為四方形,若需要有圓形、菱形甚至是縷空的圖像文件時,TGA可就派上用場,
TGA格式支持壓縮,使用不失真的壓縮算法。
(摘自百科)
一、文件結構
TGA原始文件結構(v1.0)
文件頭和圖像/顏色表數據兩部分組成
TGA擴展文件結構(v2.0)
①文件頭(Tga File Header):由圖像描述信息字段長度、顏色表類型、圖像類型、顏色表說明和圖像說明五個字段組成,總計18字節,描述了圖像存儲的基本信息,應用程序可依據該部分字段值讀寫圖像數據。
② 圖像/顏色表數據(Image/Color Map Data):由圖像描述信息(可選)、顏色表數據和圖像數據三部分組成,用于存儲圖片的圖像信息。
③開發者自定義區域(Developer Area):包含開發者定義字段列表和開發者字典(用于存儲開發者定義字段的值),該區域為開發者擴展該文件格式提供接口,以便存儲額外的信息。
④ 擴展區域(Extension Area):由擴展區域大小、作者姓名、作者注釋、日期/時間、工作名稱/ID、工作累計耗時、編輯軟件的名稱、編輯軟件的版本、關鍵顏色、像素寬高比、灰度值、顏色校正表偏移量、縮略圖偏移量、掃描線表偏移量、alpha通道類型、掃描線表、縮略圖圖像數據和顏色校正表組成,為Truevision公司定義的標準擴展功能,以提供更多的圖像附加信息。
⑤文件尾(TGA File Footer):由擴展區域偏移量、開發者目錄偏移量和TGA文件擴展格式簽名三部分組成,用于驗證TGA文件擴展格式,并可以確定擴展區域和開發者字典的位置。
摘自新浪博客
二、數據組織
下面以該圖片為例分析:
1、文件頭
typedef struct tagTgaFileHeader {
BYTE 字段1—ID length;/說明字段6的長度,0表示沒有字段6/
BYTE 字段2—Color Map Type;/說明使用顏色表的類型,0 表示不使用顏色表;1 表示使用顏色表;2~225未定義/
BYTE 字段3—Image Type;/說明使用的圖像類型:
0-沒有圖像數據
1-未壓縮,顏色表映射圖像
2-未壓縮,真彩圖像
3-未壓縮,黑白圖像
9-行程編碼,顏色表映射圖像
10-行程編碼,真彩圖像
11-行程編碼,黑白圖像/
5BYTE 字段4—Color Map Specification;/顏色表說明:
WORD顏色表首地址(First Entry Index)第一個顏色表表項的索引,是裝載顏色表的首地址;
WORD顏色表長度(Color map Length)顏色表包含元素個數;
BYTE顏色表每一個元素大小(Color map Entry Size)15、16、24或32位,15位圖像最高位置0,按16位存儲;/
10BYTE 字段5—Image Specification;/圖像說明:
WORD圖像坐標原點X值(X-origin of Image)
WORD圖像坐標原點Y值(Y-origin of Image)
WORD圖像寬度(Image Width)
WORD圖像高度(Image Height)
BYTE像素深度(Pixel Depth)表示每個像素占用的位數,8,16,24或32位
BYTE圖像描述(Image Descriptor) 0-3bit,規定了alpha值所占位數;4-5bit,表示坐標原點位置,00左下01右下10左上11右上;/
}
·示例分析
共18個字節
可以看出
2、圖像/顏色表數據
typedef struct tagImage/ColorMapData {
變長 字段6—Image ID;/存儲圖像的描述信息,由字段1圖像信息字段長度(ID length)規定本字段的長度/
變長 字段7—Color Map Data;/顏色表數據,顏色表類型為0時本字段不存在/
變長 BYTE 字段8—Image Data;/*圖像數據,存儲顏色索引值,包含長x寬個像素,分別存放顏色(a)rgb分量:16位 gggbbbbb arrrrrgg 24位:BGR 32位:BGRA */
}
·示例分析
3.實際結束位置:
(4A53B)16=(304442)10
304442-18=304424,遠小于1117800,約縮小了3.6倍。
3、開發者自定義區域
typedef struct tagDeveloper Area{
變長 字段9—Developer Fields;}
開發者字段的尺寸和格式由開發者規定的,讀取包含這些信息的文件時,完全可以忽略。文件可能包含多個開發者字段,所以需要創建開發者目錄Developer Directory,它是開發者區域中這些字段的映射表。開發者目錄可以使用偏移量來表示,存儲在TGA文件注角File Footer的4-7字節內,該偏移量是從文件的起始位置算起至開發者目錄的起始位置,如果偏移量為0,則不存在開發者字段。
4、拓展區域
typedef struct tagExtension Area
字段10-27
該拓展區域用于滿足一些開發者對額外信息的需求,該區域的位置也是通過保存在TGA文件注腳中的偏移量來確定的,如果該偏移量為0,則不存在拓展區域。
5、TGA文件注腳
typedef struct tagTGAFileFooter{
DWORD 字段28—Extension Area Offest;/擴展區域偏移量/
DWORD 字段29—Developer Directory Offest/開發者字典偏移量/;
16BYTE 字段30—Signature;/檢測到此簽名則文檔為TGA擴展格式;反之為TGA原始格式/
TYPE 字段31—End Character;/TGA文件結束字符/
TYPE 字段32—End Of File;/文件結束符\0/}
總結
以上是生活随笔為你收集整理的2 | TGA文件格式分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vmware虚拟机全屏分辨率调节
- 下一篇: 智能家具N种WIFI密码设置方法