TGA文件格式解析

TGA文件包含5个区域:

(1)TGA文件头(TGA File Header);

图像信息字段长度(ID length)– 字段1(1个字节)
这个字段规定了包含在字段6(Image ID字段)中的字节数,取值范围0-255,
它的值为0,则表示在这个文件中没有图像信息字段。
颜色表类型(Color Map Type)– 字段2(1个字节):
当前已定义的有两个值0或者1,0 表示没有颜色表(color map),1 表示颜色表存在。
图像类型(Image Type)– 字段3(1个字节):
TGA文件格式可以用于存储各种位深度的伪彩色,真彩色,调配色,目前定义的7种文件格式。
0-没有图像数据
1-未压缩,颜色表映射图像
2-未压缩,真彩图像
3-未压缩,黑白图像
9-行程编码,颜色表映射图像
10-行程编码,真彩图像
11-行程编码,黑白图像
颜色表规约(Color Map Specification) – 字段 4(5字节):
这个字段和它的子字段描述图像中使用的颜色表,如果颜色表类型字段为0,则表示不存在颜色表,则5个字节应该被设置为0,这些字节需要写入文件中。

名称 字节数 说明
颜色表首地址(First Entry Index) 2 第一个颜色表表项的索引,是装载颜色表的首地址。
颜色表长度(Color map Length) 2 颜色表表项的数量
颜色表表项大小(Color map Entry Size) 1 每个表项占用的位数,15,、16、24或者32位

图像规约(Image Specification)– 字段 5(10个字节):
这个字段和它的子字段描述了图像的屏幕位置,尺寸和像素深度。

名称 字节数 说明
图像X位置的起始位置(X-origin of Image) 2 图像左下角的水平坐标
图像Y位置的起始位置(Y-origin of Image) 2 图像左下角的垂直坐标
图像宽度(Image Width) 2
图像高度(Image Height) 2
像素深度(Pixel Depth) 1 表示每个像素占用的位数,通常8/16/24/32位
图像描述符(Image Descriptor) 1 0-3位,规定了每个像素属性位的数量。4-5位,这些位用于表示像素数据从文件发送到屏幕的顺序,位4表示从左到右,位5表示从上到下。

(2)图像/颜色表数据(Image/Color Map Data);

图像信息字段(Image ID)– 字段 6(可变长):
存储了图像的身份信息(Identifying Information)这个字段最长为255个字节,图像信息字段长度字段规定了它的长度。
颜色表数据(Color Map Data) –字段7(可变长):
这个变长字段包含了颜色表信息(LUT数据),颜色表表项大小和颜色表长度字段共同规定了颜色表数据的长度。每个颜色表表项用整数个字节存储,规定每个颜色表的RGB采用连续的位存储,每个颜色的位长为MIN(颜色表表项大小字段值/3,8)。
图像数据(Image Data)– 字段 8(可变长):
这个字段包含Width*Height个像素,每个像素的格式如下所示:
(1)用伪彩色表示,则是一个颜色图的一个索引号;
(2)真彩图,则是属性,红绿,蓝顺序的数据;
(3)用调配色表示,就是独立的颜色表索引。

(3)开发者区域(Developer Area);

开发者数据(Developer Data) – 字段 9(可变长):
开发者字段的尺寸和格式完全是由开发者规定的,读取包含这些信息的文件时,完全可以忽略它们,除非理解这些内容。文件可能包含多个开发者字段,所以需要创建开发者目录(Developer Directory),它是开发者区域中这些字段的映射表。开发者目录可以使用偏移量来表示,存储在TGA文件注角(File Footer)4-7字节内,该偏移量是从文件的起始位置算起至开发者目录的起始位置,如果偏移量为0,则不存在开发者字段。

(4)拓展区域(Extension Area);

该拓展区域用于满足一些开发者对额外信息的需求,该区域的位置也是通过保存在TGA文件注脚中的偏移量来确定的,如果该偏移量为0,则不存在拓展区域。该区域包括拓展区域尺寸,作者名字,作者评论等信息。

(5)TGA文件注脚(TGA File Footer)。

最后26个字节表示文件注脚,但是对于原先版本的TGA文件格式不存在这个区域,可以扫描8-23字节,如果符合下列字符串:

TRUEVISION-XFILE

说明很有可能存在注脚字段,否则则属于原先版本的TGA文件。该区域的格式如下所示:

Bytes 0-3:拓展区域偏移量

Bytes 4-7:开发者区域偏移量

Bytes 8-23:签名

Byte 24:ASCII码”.”

Byte 25:二进制数0x00。

参考链接

你可能感兴趣的:(TGA文件格式解析)