2.1 TGA图像文件格式解析

2.1 TGA图像文件格解析

作业内容:使用FlexHEX对下图的TGA格式的图像进行文件格式解析。
校徽

简介

TGA(Truevision Graphics Adapter)文件格式,通常又称为Targa(Truevision Advanced Raster Graphics Adapter),是由Truevision公司于1984年创建。
TGA文件格式可用于存储8位、15位、16位、24位、32位图像数据,支持alpha通道、颜色索引、RGB颜色、灰度图、行程压缩算法(RLE)、开发者自定义区、缩略图等。TGA文件格式因其格式简单、易于实现、没有专利费用和跨平台等特性而被图形图像工业广泛使用。

以上内容引自追梦人的博客

一、文件如何组成

TGA扩展文件结构(v2.0)由五部分组成:

  • 文件头 TGA File Header
  • 图像/颜色表数据 Image/Color Map Data
  • 开发者自定义区域 Developer Area
  • 扩展区域 Extension Area
  • 文件尾 TGA File Footer
    TGA文件格式中字段的字节存储次序采用Little-Endian的方式,即小端在前。文件格式中的整型值字段均用无符号整型存储。对于颜色的存储,TGA规定按整型数据存储,颜色值各分量在整型数据中的存储顺序从高到低为(A)RGB

二、文件数据的组织方式如何

1、TGA File Header——18字节

字段(字节数)含义
图像信息字段长度 ID length(1个字节)规定了包含在Image ID字段中的字节数,最大的字符数是255。若它的值为0,则表示在这个文件中没有图像信息字段。
颜色表类型 Color Map Type(1个字节)使用的颜色表类型:0——没有颜色表(color map);1——使用颜色表;2-127——Truevision保留使用;128-255——用于开发者的应用中。(在保存或者创建真彩图像文件时并不会使用到这个字段,请将它设置为0以确保兼容性。)
图像类型 Image Type(1个字节)使用的图像类型:0——没有图像数据;1——未压缩的颜色表图像;2——未压缩的真彩色图像;3——未压缩的黑白图像;9——RLE(行程压缩算法)压缩的颜色表图像;10——RLE压缩的真彩色图像;11——RLE压缩的黑白图像;12-127——Truevision保留使用;128-255——用于开发者的应用中。
颜色表规约 Color Map Specification(5字节)描述图像中使用的颜色表。4.1字段:颜色表首地址(2字节)——第一个颜色表表项的索引,是装载颜色表的首地址(可以允许从颜色表的中间开始索引)。4.2字段:颜色表长度(2字节)——颜色表表项的数量。4.3字段:颜色表表项大小(1字节)—— 每个表项占用的位数,典型的值有15,16,24,或者32位。(如果颜色表类型字段为0,则表示不存在颜色表,则5个字节应该被设置为0
图像规约 Image Specification(10个字节)描述了图像的屏幕位置,尺寸和像素深度。5.1字段:图像X位置的起始位置(2个字节) ——图像左下角的水平坐标。5.2字段:图像Y位置的起始位置(2个字节) ——图像左下角的垂直坐标。5.3字段:图像宽度(2个字节) 。5.4字段:图像高度(2个字节) 。5.5字段:像素深度(1个字节)——每个像素占用的位数,通常的值是8,16,24,32位。5.6字段:图像描述符(1个字节)——0-3位,规定了每个像素属性位的数量;4-5位,用于表示像素数据从文件发送到屏幕的顺序,位4表示从左到右,位5表示从上到下;6-7位为0。

实例数据
图1
数据表明:该TGA文件:

  • 没有图像信息字段
  • 没有使用颜色表(颜色表规约字段为0)
  • 未压缩的真彩色图像
  • 图像左下角的水平和垂直坐标均为0
  • 图像宽高1024*1024
  • 像素深度24bit

2、Image/Color Map Data

字段(字节数)含义
图像信息字段 Image ID(可变长)存储图像的身份信息(Identifying Information)。最长为255个字节,图像信息字段长度 ID length字段规定了它的长度
颜色表数据 Color Map Data(可变长)包含颜色表信息(LUT数据),字段4.3和字段4.2共同规定了该字段的长度每个颜色表表项用整数个字节存储,规定每个颜色表的RGB采用连续的位存储,每个颜色的位长为MIN(Field 4.3/3,8)。(若颜色表类型为0,该字段不存在。)例如:若颜色表表项大小字段值为24,则每个颜色规约是8位;若值是32,则颜色规约仍是8位,未使用的位规定为属性位,属性位通常称为Alpha通道,重叠位(overlay bit),中断位(Interrupt Bits)。
图像数据 Image Data(可变长)包含Width*Height个像素,每个像素的格式如下所示:(1)用伪彩色表示,则是一个颜色图的一个索引号;(2)真彩图,则是属性,红,绿,蓝顺序的数据;(3)用调配色表示,就是独立的颜色表索引。颜色的存储都使用整数,从高位到低位分别存放颜色(a)rgb分量,存储为文件时表示方式:16位-gggbbbbb arrrrrgg;24位-BGR;32位-BGRA

实例数据
图2
图3

数据阐释:该TGA文件:

  • 由于没有图像信息字段,则没有Image ID字段
  • 由于没有颜色表类型字段,则没有Color Map Data字段
  • 图像数据字段直接从第19个字节开始
  • 由于是24bit真彩色图像,则Image Data字段中的数据含义是:各个像素的 B G R 值,共1024*1024个像素,即图像数据字段共有3145728个字节。(首尾字节已于图中标出)

3、Developer Area

开发者数据 Developer Data(可变长)

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

4、Extension Area

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

5、TGA File Footer——最后26字节

字段(字节数)含义
扩展区域偏移量 Extension Area Offset(4字节)从文件开始到扩展数据区域的偏移量
开发者字典偏移量 Developer Directory Offset(4字节)从文件开始到开发者字典数据的偏移量
签名 Signature(16字节)若检测到此签名(符合字符串TRUEVISION-XFILE),则说明该TGA文件为v2.0的TGA扩展格式文件;否则说明TGA文件为原始TGA格式的文件。
End Character(1字节)TGA文件结束字符——ASCII码”.”
End Of File(1字节)文件结束符——二进制数0x00

实例数据
图4
数据表明:该TGA文件:

  • 没有Extension Area
  • 没有Developer Area
  • 存在字符串为TRUEVISION-XFILE的签名,即为v2.0的TGA扩展格式文件
  • 最后的倒数第2个字节:TGA文件结束字符——ASCII码”.”
  • 最后一个字节:文件结束符——二进制数0x00

三、实例分析

使用FlexHEX对下图的TGA格式的图像进行文件格式解析:
大拇指

1、TGA File Header

图1
数据表明:该TGA文件:

  • 没有图像信息字段
  • 没有使用颜色表(颜色表规约字段为0)
  • 未压缩的真彩色图像
  • 图像左下角的水平和垂直坐标均为0
  • 图像宽高697*480
  • 像素深度24bit

2、Image/Color Map Data

图2
图3
数据阐释:该TGA文件:

  • 由于没有图像信息字段,则没有Image ID字段
  • 由于没有颜色表类型字段,则没有Color Map Data字段
  • 图像数据字段直接从第19个字节开始
  • 由于是24bit真彩色图像,则Image Data字段中的数据含义是:各个像素的 B G R 值,共697*480个像素,即图像数据字段共有1003680个字节。(首尾字节已于图中标出)

3、TGA File Footer

图4
数据表明:该TGA文件:

  • 没有Extension Area
  • 没有Developer Area
  • 存在字符串为TRUEVISION-XFILE的签名,即为v2.0的TGA扩展格式文件
  • 最后的倒数第2个字节:TGA文件结束字符——ASCII码”.”
  • 最后一个字节:文件结束符——二进制数0x00

四、参考

追梦人的博客
http://www.twinklingstar.cn/2013/471/tga-file-format/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值