一.TGA文件简介

1.概述

TGA(Tagged Graphics) 

TGA是由 美国Truevision公司为其显示卡开发的一种 图像文件格式,已被国际上的图形、图像工业所接受。现在已成为 数字化图像,以及运用光线跟踪算法所产生的高质量图像的常用格式。TGA文件的 扩展名为.tga。TGA的结构比较简单,属于一种图形、图像数据的通用格式,目前大部分文件为24位或32位真彩色,在多媒体领域有着很大影响。由于Truevision公司推出TGA的目的是为了采集、输出电视图像,所以TGA文件总是按行存储、按行进行压缩的,这使得它同时也成为计算机生成图像向电视转换的一种首选格式。使用 photoshop 软件可以打开此类文件。

2.结构

TGA的结构比较简单,属于一种图形、图像数据的通用格式,在多媒体领域有很大影响,是 计算机生成图像向电视转换的一种首选格式。

3.特点

  TGA图像格式最大的特点是可以做出不规则形状的图形、图像文件,一般图形、图像文件都为四方形,若需要有圆形、菱形甚至是缕空的图像文件时,TGA可就派上用场了!

4.优点

  TGA格式支持压缩,使用不失真的压缩算法。

  在工业设计领域,使用三维软件制作出来的图像可以利用TGA格式的优势,在图像内部生成一个Alpha(通道),这个功能方便了在平面软件中的工作。

Tga常见的格式有非压缩RGB和压缩RGB两种格式,文件的第三个Byte位作为标记:2为非压缩RGB格式,10为压缩RGB格式。这里的类只实现读取非压缩格式的tga文件。

5.TGA文件格式

名称

偏移

长度

说明

图像信息字段长度

0

1

本字段是 1 字节无符号整型,指出图像信息字段( 见本子表的后面 )长度,其取值范围是 0 到 255 ,当它为 0 时表示没有图像的信息字段。

颜色表类型

1

1

0 表示没有颜色表,1 表示颜色表存在。由于本格式是无颜色表的,因此此项通常被忽略。

图像类型码

2

1

该字段总为 2 , 这也是此类型为格式 2 的原因。

颜色表规格字段

颜色表首址

3

2

颜色表首的入口索引,整型(低位-高位)

如果颜色表字段为0,则忽略该字段

颜色表的长度

5

2

颜色表的表项总数,整型(低位-高位)

颜色表项位数

7

1

位数(bit),16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA

图像规格字段

图像 X 坐标起始位置

8

2

图像左下角 X坐标的整型(低位-高位)值

图像 Y 坐标起始位置

10

2

图像左下角 Y坐标的整型(低位-高位)值

图像宽度

12

2

以像素为单位,图像宽度的整型(低位-高位)

图像高度

14

2

以像素为单位,图像宽度的整型(低位-高位)

图像每像素存储占用位数

16

2

它的值为16,24 或 32 等等。决定了该图像是 TGA 16,TGA24,TGA 32 等等。

图像描述符字节

17

1

bits 3-0 - 每像素对应的属性位的位数;

对于TGA 16, 该值为 0 或 1,对于 TGA                     24,该值为 0,对于 TGA 32,该值为 8。

bit 4    - 保留,必须为 0

bit 5    - 屏幕起始位置标志

0 = 原点在左下角

1 = 原点在左上角

对于 truevision 图像必须为 0

bits 7-6 - 交叉数据存储标志

00 = 无交叉

01 = 两路奇/偶交叉

10 = 四路交叉

11 = 保留

图像信息字段

18

可变

包含一个自由格式的,长度是图像由“图像信息字段”指定。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以含有 255 个字符。如果需要存储更多信息,可以放在图像数据之后。

颜色表数据

可变

可变

如果颜色表类型为 0,则该域不存在,否则越过该域直接读取图像颜色表规格中描述了每项的字节数,为 2,3,4 之一。

图像数据

可变

可变

RGB颜色数据,存放顺序为:BBB GGG RRR (AAA)

6.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,这些字节需要写入文件中。

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


(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文件实例分析

1.将文件转化为TGA格式

用格式工厂将下图转为tga格式后,用Visual Studio2022以二进制编辑器形式打开。

2.分析文件

(1)文件头

①无图像信息字段,1字节,00
②没有使用颜色表,1字节,00
③未压缩的真彩图像,1字节,02
④由于不含颜色表,表示颜色表规范的第4-8字节都为0
⑤x轴起始坐标为0,2字节,00;y轴起始坐标为0,2字节,00;
即从图像左下角原点开始
⑥图像宽度为2字节,(178)B2;图像高度也为2字节,(107)6B。
⑦图像每像素存储占用位数为24位,2字节,18

(2)文件尾

(3)验证文件大小

通过分析二进制数据,可以计算得到文件大小:
18(文件头)+946*1643*3(图像部分)+0+0(无扩展区域和开发在自定义区域+26(文件尾)=4662878字节

TGA--数据压缩第二次作业相关推荐

  1. 数据压缩第二周作业——图片TIFF格式分析

    数据压缩第二周作业 TIFF格式概述 特点 组成 图像文件头(Image File Header - IFH) Byteorder Version Offest to first IFD 图像文件目录 ...

  2. 数据压缩 第二次作业

    1.设X是一个随机变量,取值范围是一个包含M个字母的符号集.证明0<=H(X)<=log2M. 2.证明如果观察到一个序列的元素为iid分布,则该序列的熵等于一阶熵. 3.给定符号集A{a ...

  3. 南京大学网络教育计算机第二次作业,南京大学网络学院计算机基础第二次作业...

    南京大学网络学院计算机基础第二次作业 作业名称:计算机基础第2次作业 作业总分:100 通过分数:60 起止时间: 2015-5-4 至 2015-5-29 23:59:00 标准题总分:100 详细 ...

  4. 丁贵才130702010042第二次作业

    第二次作业 2.9 设有如下语句,请用相应的谓词公式分别把它们表示出来: (1)有的人喜欢梅花,有的人喜欢菊花,有的人既喜欢梅花有喜欢梅花. 解:定义谓词 P(x):x是人 L(x,y):x喜欢y y ...

  5. 20189317 《网络攻防技术》 第二周作业

    一.黑客信息 (1)国外黑客 1971年,卡普尔从耶鲁大学毕业.在校期间,他专修心理学.语言学以及计算机学科.也就是在这时他开始对计算机萌生兴趣.他继续到研究生院深造.20世纪60年代,退学是许多人的 ...

  6. mysql 三阶多项式拟合_2014年9月份考试机械CAD_CAM第二次作业

    2014年9月份考试机械CAD/CAM第二次作业 一.单项选择题(本大题共40分,共 20 小题,每小题 2 分) 1. 在CAD作业中,采用数据文件形式来处理工程数表.线图数据,其目的是() A. ...

  7. 2021年春季学期-信号与系统-第二次作业参考答案-第十小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第十题 10 从网络学堂下载代表两个信号的音频文件: 音频文件: f1(t)f_1 \left( t \right)f1​( ...

  8. 2021年春季学期-信号与系统-第二次作业参考答案-第九小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第九题 9. 已知三个系统的输入输出关系分别为: 把上述三个子系统进行如下的级联,求系统的输入输出关系,它是线性.时不变系统 ...

  9. 2021年春季学期-信号与系统-第二次作业参考答案-第八小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第八题 8. 判断下列系统是否为线性.时不变.因果? (1)第一小题 r(t)=ddte(t)r\left( t \righ ...

  10. 2021年春季学期-信号与系统-第二次作业参考答案-第七小题

    本文是 2021年春季学期-信号与系统-第二次作业参考答案 的参考答案. ▌第七题 7. 判断下列系统是否可逆.若可逆,给出它的逆系统:若不可逆,指出使该系统产生相同输出的两个输入信号. 判断系统是否 ...

最新文章

  1. ldap、additional info: no global superior knowledge
  2. Ubuntu 17.4下如何安装和配置flash player
  3. linux c warning 'XXX' declared 'static' but never defined解决方法
  4. C语言 实现一个函数判断year是不是润年
  5. python字符串去掉特殊符号和空格_从字符串中删除所有特殊字符,标点符号和空格...
  6. Kibana停止kibana的方法命令:找到5601端口对应的进程ID 把此进程进行kill即可
  7. 借助Redis完成延时任务
  8. 航测大数据量处理_揭秘航测局“航空摄影质量自动检查系统”的“黑科技”
  9. B 站崩了,受害程序员聊聊
  10. EF:oracle的number类型映射为C#的boolean类型
  11. FFmpeg实战命令(不断更新中...)
  12. python保存后不运行_Python后台执行不启用缓存
  13. iOS 绝对值方法
  14. Win7 SP1 安装 .NET Framework 4.6.2,提示“时间戳签名和或证书无法验证或已损坏”
  15. 七倍压电路图_二极管简单升压电路 晶体二极管与电容七倍升压电路图如何分析...
  16. python假分数约分_数学中假分数怎么约分
  17. 命令行基础-vim编辑器
  18. 借助Bilibili Evolved和aria2批量下载b站视频
  19. NPL笔记——语言模型
  20. 强制清空浏览器缓存与无视管理员权限删除应用

热门文章

  1. HTTP状态码及说明大全
  2. 菜鸟、大牛和教主,三者的区别
  3. Vue-router,从基础入门到手拿大厂Offter,看这篇文章就够了。
  4. 考中山大学计算机博士专业考什么,2020年中山大学博士考试的科目以及录取分数值...
  5. Dirty Cow Attack Lab(中文译版)
  6. python 创建空的numpy数组_真假美猴王-Numpy数据与Python数组的区别与联系
  7. linux服务器创建wss服务 https+wss配置指南
  8. 云场景实践研究第83期:众安保险
  9. 2018中国大学生程序设计竞赛 - 网络选拔赛
  10. mac obs直播软件 无法输出音频解决办法