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