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格式图片文件分析相关推荐
- 【数据压缩2】TGA格式图片文件分析
一.TGA文件概述 1.什么是TGA格式图像? tga是由美国Truevision公司为其显示卡开发的一种图像文件格式,已被国际上的图形.图像工业所接受.现已成为数字化图像,以及运用光 ...
- 3_HEIF/heic格式图片文件解析(20190107)
3_HEIF/heic格式图片文件解析(20190107) HEIF/heic格式图片文件解析(20190107) 文章目录 参考: https://zhuanlan.zhihu.com/p/3466 ...
- java读取ppm图片_C++ 输出PPM格式图片文件
##PPM简介 学习图形学时为了直观地观察结果,需要输出图片,而PPM是一种最简单的图片格式,非常适合新手使用. PPM文件的内容大概是这样的: 第一行固定为P3,代表写入的是PPM格式的RGB图像, ...
- 微软RAW格式补丁下载,让 Windows7 直接支持预览和查看 RAW 格式图片文件!
对于摄影师或摄影爱好者来说,很多时候都需要和 RAW 格式的图片打交道,但是 Windows7 在不安装第三方软件的情况下,是无法在资源管理器中直接预览 RAW 文件的,对此经常有朋友表示不爽. 最近 ...
- 对于TGA格式文件的分析
一.TGA格式文件概述 TGA格式图片文件(Tagged Graphics)是由美国Truevision公司为其显示卡开发的一种图像文件格式,文件后缀为".tga",已被国际上的图 ...
- TGA格式文件转化为YUV文件
因为之前分析的PNG格式文件数据有压缩,不太好提取数据,所以这一次尝试将TGA格式的文件转化为YUV格式的文件. TGA文件的文件头中包括图片类型.图片的宽高数据.每像素占用的bit位数等数据,本次的 ...
- 数据压缩·作业五(tga文件分析)
从tga文件如何设计去提问题然后分析tga文件. 1.明确tga文件由几种文件类型,用哪个字段表示. 2.用类型2来说明tga文件的文件分为几部分,每个部分都说明了什么信息. 3.那些块是用来交换.管 ...
- Windows微信聊天图片文件的解码和图片、视频占满电脑磁盘空间的清理
1 问题现象 我的Windows版微信最近老是提示"磁盘空间不足200MB,需及时清理磁盘". 使用文件资源管理器查看我的电脑磁盘使用情况,发现C盘只剩下174MB空间可用.系统盘 ...
- 【数字图像处理】一.MFC详解显示BMP格式图片
本文主要是讲述<数字图像处理>系列栏目中的第一篇文章.主要详细介绍了BMP图片格式,同时使用C++和MFC显示BMP格式,主要结合自己的<数字图像处理>课程和以前的项目叙述讲解 ...
- MFC详解显示BMP格式图片
本文主要是讲述<数字图像处理>系列栏目中的第一篇文章.主要详细介绍了BMP图片格式,同时使用C++和MFC显示BMP格式,主要结合自己的<数字图像处理>课程和以前的项目叙述讲解 ...
最新文章
- AngularJS 最佳实践
- 百度地图获取河流_想要提高学生对地理的兴趣,就要多利用地图,培养学生的思维能力...
- Python:代码规范和命名规范
- 大数据分析的四大趋势有哪些
- 《痞子衡嵌入式半月刊》 第 2 期
- 金蝶k3wise云服务器配置,金蝶K3WISEV15.0系统配置说明
- 谷歌浏览器屏蔽广告插件
- 切向量,法向量,梯度
- 单节锂离子电池充电设计
- kdj买卖指标公式源码_通达信kdj买卖指标公式
- java英语单词查询,输入一个单词根据字典查询单词意思
- 关于阿里直播 安卓手机支付宝不支持的处理
- 两波形相位差的计算值_国际学科备考系列A-level物理:相位和相位差的数学解释及物理应用...
- iPhone自定义手机铃声完整版教程
- 生物信息数据格式:fasta格式
- Java实现zip文件压缩:单个文件、文件夹以及文件和文件夹的压缩
- 三星手机和计算机如何连接打印机,三星打印机连接到电脑没反应怎么办
- WinForm常用控件
- 2022年9月青少年软件编程(图形化)等级考试试卷--三级--跳高比赛
- Unmasking Clever Hans predictors and assessing what machines really learn:揭露“聪明汉斯”预测变量并评估机器到底学习到了什么?