TGA格式图片文件分析
一、TGA文件概述
1.什么是TGA格式圖像?
????????tga是由美國Truevision公司為其顯示卡開發(fā)的一種圖像文件格式,已被國際上的圖形、圖像工業(yè)所接受。現(xiàn)已成為數(shù)字化圖像,以及運(yùn)用光線跟蹤算法所產(chǎn)生的高質(zhì)量圖像的常用格式。TGA文件的擴(kuò)展名為.tga,該格式支持壓縮,使用不失真的壓縮算法,可以帶通道圖,另外還支持行程編碼壓縮。
2.TGA文件各區(qū)域及其包含的字段
TGA文件包含5個(gè)區(qū)域,分別為:
(1)TGA文件頭(TGA File Header)
(2)圖像\顏色表數(shù)據(jù)(Image/Color Map Data)
(3)開發(fā)者區(qū)域(Developer Area)
(4)拓展區(qū)域(Extension Area)
(5)TGA文件注腳(TGA File Footer)
表1.各區(qū)域的字段分布
| 區(qū)域名稱 | 字段 | 字段長度 | |
| 文件頭 | 圖像信息字段長度 | 1 byte | |
| 顏色表類型 | 1 byte | ||
| 圖像類型 | 1 byte | ||
| 顏色表規(guī)約 | 5 byte | ||
| 圖像規(guī)約 | 10 byte | ||
| 圖像\顏色表數(shù)據(jù) | 圖像信息字段 | 可變長,由圖像信息字段長度確定 | |
| 顏色表數(shù)據(jù) | 可變長,由顏色表規(guī)約字段確定 | ||
| 圖像數(shù)據(jù) | 可變長,包含圖像長*寬個(gè)像素 | ||
| 開發(fā)者區(qū)域 | 開發(fā)者數(shù)據(jù) | 可變長 | |
| 拓展區(qū)域 | 可變長,由保存在TGA文件注腳中的偏移量確定 | ||
| TGA文件注腳 | 保存文件注腳信息 | 最后26 byte | |
3.TGA文件中的顏色
(1)偽彩色(pseudo-color):圖像的每個(gè)像素值實(shí)際上是一個(gè)索引值或代碼,該代碼值作為色彩查找表CLUT(Color Look-Up Table)中某一項(xiàng)的入口地址,根據(jù)該地址可查找出包含實(shí)際R、G、B的強(qiáng)度值。用這種查找映射的方法產(chǎn)生的色彩成為偽彩色。
(2)真彩色(true-color):圖像中的每個(gè)像素值都分成R、G、B三個(gè)基色量,每個(gè)基色分量直接決定其基色的強(qiáng)度,這樣產(chǎn)生的彩色成為真彩色。
(3)調(diào)配色(direct-color):該值的獲取是通過每個(gè)像素點(diǎn)的R、G、B分量分別作為單獨(dú)的索引值進(jìn)行變換,經(jīng)相應(yīng)的色彩變換表找出各自的基色強(qiáng)度,用變換后的R、G、B強(qiáng)度值產(chǎn)生的色彩。
?二、TGA具體文件分析
圖1.以該圖為例分析TGA文件的格式
使用VS-二進(jìn)制編輯器打開此圖片:
1.文件頭分析
表2.文件頭18字節(jié)分布
| 名稱 | 偏移 | 長度 | 說明 | |
| 圖像信息字段長度 | 0 | 1 | 這個(gè)字段規(guī)定圖像信息字段的長度,最大的字符數(shù)是255,若值為0,則表明這個(gè)文件中沒有圖像信息字段 | |
| 顏色表類型 | 1 | 1 | 0表示沒有顏色表,1表示有顏色表 | |
| 圖像類型 | 2 | 1 | TGA文件格式可以用于存儲(chǔ)各種位深度的偽彩色、真彩色、調(diào)配色,目前定義的7種文件格式如下: 0 - 沒有圖像數(shù)據(jù) 1 - 未壓縮,顏色表映射圖像 2 - 未壓縮,真彩圖像 3 - 未壓縮,黑白圖像 9 - 行程編碼,顏色表映射圖像 10 - 行程編碼,真彩圖像 11 - 行程編碼,黑白圖像 | |
| 顏色表規(guī)約 | 顏色表首地址 | 3 | 2 | 第1個(gè)顏色表表項(xiàng)的索引,裝載顏色表的首地址 |
| 顏色表長度 | 5 | 2 | 顏色表表項(xiàng)的數(shù)量 | |
| 顏色表表項(xiàng)大小 | 7 | 1 | 每個(gè)表項(xiàng)占用的位數(shù),典型值有15、16、24或32位 | |
| 圖像規(guī)約 | 圖像x位置的起始位置 | 8 | 2 | 圖像左下角的水平座標(biāo) |
| 圖像x位置的起始位置 | 10 | 2 | 圖像左下角的垂直坐標(biāo) | |
| 圖像寬度 | 12 | 2 | 低位在前高位在后 | |
| 圖像高度 | 14 | 2 | ||
| 像素深度 | 16 | 1 | 該字段表示每個(gè)像素占用的位數(shù),通常的值為8、16、24、32位 | |
| 圖像描述符 | 17 | 1 | 0-3位:規(guī)定每個(gè)像素屬性位的數(shù)量 4-5位:表示像素?cái)?shù)據(jù)從文件發(fā)送到屏幕的順序,位4表示從左到右,位5表示從上到下,如下所示: Bit 5 ??Bit 4 從下到上,從左到右 ??0 ?????0 從下到上,從右到左 ??0 ?????1 從上到下,從左到右 ??1 ?????0 從上到下,從右到左 ??1 ?????1 | |
圖2.示例圖前18字節(jié)的文件頭
(1)第1字節(jié):00表示此圖像中沒有圖像信息字段
(2)第2字節(jié):00表示此圖像中沒有顏色表
(3)第3字節(jié):02表示此圖像為未壓縮的真彩圖像
(4)第4-8字節(jié):均為00表示該圖像無顏色表信息
(5)第9-10字節(jié):00 00表示圖像左下角水平坐標(biāo)為0
(6)第11-12字節(jié):00 00表示圖像左下角垂直坐標(biāo)為0
(7)第13-14字節(jié):AA 04表示圖像寬度為4AA(16進(jìn)制數(shù))即1194像素
(8)第15-16字節(jié):60 03表示圖像高度為360(16進(jìn)制數(shù))即864像素
(9)第17字節(jié):18表示圖像深度為18(16進(jìn)制數(shù))即24位
(10)第18字節(jié):00表示圖像從下到上從左到右發(fā)送到屏幕
?2.圖像\顏色表數(shù)據(jù)、開發(fā)者區(qū)域和拓展區(qū)域分析
由文件頭信息可知該圖像是未壓縮的真彩圖像,故該部分的數(shù)據(jù)存儲(chǔ)順序?yàn)?#xff1a;B-G-R-屬性;
這一部分的數(shù)據(jù)大小為寬*高*3(24位)字節(jié),在本例中:
????????寬(1194像素)*高(864像素)*3(24位) = 3,094,848字節(jié);
與文件頭(18字節(jié))和文件注腳(26字節(jié))相加為該圖像的總大小即3,094,892字節(jié);
查看圖像的屬性可驗(yàn)證該計(jì)算方法。
圖3.TGA圖像屬性
3.TGA文件注腳分析
表3.文件注腳26字節(jié)分布
| 名稱 | 偏移 | 長度 | 說明 | |
| TGA文件注腳 | 拓展區(qū)域偏移量 | 可變 | 4 | 從文件開始到擴(kuò)展數(shù)據(jù)區(qū)域的偏移量 |
| 開發(fā)者區(qū)域偏移量 | 可變 | 4 | 從文件開始到開發(fā)者字典數(shù)據(jù)的偏移量 | |
| 簽名 | 可變 | 16 | 最后26個(gè)字節(jié)表示文件注腳,凡是對于原先版本的TGA文件格式不存在這個(gè)區(qū)域,可以掃描8-23字節(jié),如果符合下列字符串: TRUEVISION-XFILE 說明很有可能存在注腳字段,否則屬于原先版本的TGA文件 | |
| ASCⅡ碼 | 可變 | 1 | TGA文件結(jié)束字符——ASCⅡ碼值為“.” | |
| 二進(jìn)制數(shù) | 可變 | 1 | 文件結(jié)束字符——二進(jìn)制數(shù)0x00 | |
圖3.示例圖最后26字節(jié)的文件注腳
(1)第1-4字節(jié):表示拓展區(qū)域偏移量為0
(2)第5-8字節(jié):表示開發(fā)者區(qū)域偏移量為0
(3)第9-24字節(jié):表示簽名,存在“TRUEVISION-XFILE”字符串,表明存在注腳字段
(4)第25字節(jié):用ASCⅡ碼值“.”表示TGA文件結(jié)束
(5)第26字節(jié):用二進(jìn)制數(shù)0x00表示文件結(jié)束
?三、總結(jié)
????????分析TGA格式的圖像文件,主要是要理解各個(gè)字段數(shù)據(jù)的含義,格外要注意“低位在前高位在后”的讀數(shù)規(guī)則,以便于以后編程的實(shí)現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的TGA格式图片文件分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电化学工作站求峰高实现设计
- 下一篇: AI芯片算力比较