【数据压缩2】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格式的图像文件,主要是要理解各个字段数据的含义,格外要注意“低位在前高位在后”的读数规则,以便于以后编程的实现。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值