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