TGA文件格式分析和图片举例

news/2024/7/21 5:58:15 标签: 图像处理

首先据查阅资料显示:

TGA扩展文件结构(v2.0)由五部分组成:文件头、图像/颜色表数据、开发者自定义区域、扩展区域和文件尾。其中V2.0版本的文件头和图像/颜色表数据与V1.0保持一致。

1、文件头(TGA File Header):由图像描述信息字段长度、颜色表类型、图像类型、颜色表说明和图像说明五个字段组成,总计18字节,描述了图像存储的基本信息,应用程序可依据该部分字段值读写图像数据。
(1)图像信息字段长度(ID length)– 字段1(1个字节);
(2)颜色表类型(Color Map Type)– 字段2(1个字节);
0——没有颜色表(color map);
1——使用颜色表;
2-127——Truevision保留使用;
128-255——用于开发者的应用中
(3)图像类型(Image Type)– 字段3(1个字节);
0——没有图像数据;
1——未压缩的颜色表图像;
2——未压缩的真彩色图像;
3——未压缩的黑白图像;
9——RLE(行程压缩算法)压缩的颜色表图像;
10——RLE压缩的真彩色图像;
11——RLE压缩的黑白图像;
12-127——Truevision保留使用;
128-255——用于开发者的应用中。
(4)颜色表规约(Color Map Specification) – 字段 4(5字节):这个字段和它的子字段描述图像中使用的颜色表,如果颜色表类型字段为0,则表示不存在颜色表,则5个字节应该被设置为0,这些字节需要写入文件中。
字段4.1(2字节)颜色表首地址(First Entry Index):第一个颜色表表项的索引,是装载颜色表的首地址。
字段4.2(2字节)颜色表长度(Color map Length): 颜色表表项的数量.字段4.3(1个字节)颜色表表项大小(Color map Entry Size): 每个表项占用的位数,典型的值有15,16,24,或者32位。
(5)图像规约(Image Specification)– 字段 5(10个字节):这个字段和它的子字段描述了图像的屏幕位置,尺寸和像素深度。
字段5.1(2个字节) – 图像X位置的起始位置(X-origin of Image): 图像左下角的水平坐标。
字段5.2(2个字节) –图像Y位置的起始位置(Y-origin of Image): 图像左下角的垂直坐标。
字段5.3(2个字节) –图像宽度(Image Width)
字段5.4(2个字节) –图像高度(Image Height)
字段5.5(1个字节) –像素深度(Pixel Depth):这个字段表示每个像素占用的位数,通常的值是8,16,24,32位。
字段5.6(1个字节) –图像描述符(Image Descriptor)

2、图像/颜色表数据(Image/Color Map Data):由图像描述信息(可选)、颜色表数据和图像数据三部分组成,用于存储图片的图像信息。
(1)图像信息字段(Image ID)– 字段 6(可变长):存储了图像的身份信息(Identifying Information)这个字段最长为255个字节,Field 1字段规定了它的长度。
(2)颜色表数据(Color Map Data) –字段7(可变长):这个变长字段包含了颜色表信息(LUT数据),字段4.3和字段4.2共同规定了字段7的长度。
(3)图像数据(Image Data)– 字段 8(可变长):这个字段包含Width*Height个像素,每个像素的格式如下所示:(1)用伪彩色表示,则是一个颜色图的一个索引号;(2)真彩图,则是属性,红绿,蓝顺序的数据;(3)用调配色表示,就是独立的颜色表索引。

3、开发者自定义区域(Developer Area):包含开发者定义字段列表和开发者字典(用于存储开发者定义字段的值),该区域为开发者扩展该文件格式提供接口,以便存储额外的信息。
开发者数据(Developer Data) – 字段 9(可变长)

4、扩展区域(Extension Area):由扩展区域大小、作者姓名、作者注释、日期/时间、工作名称/ID、工作累计耗时、编辑软件的名称、编辑软件的版本、关键颜色、像素宽高比、灰度值、颜色校正表偏移量、缩略图偏移量、扫描线表偏移量、alpha通道类型、扫描线表、缩略图图像数据和颜色校正表组成,为Truevision公司定义的标准扩展功能,以提供更多的图像附加信息。

5、文件尾(TGA File Footer):由扩展区域偏移量、开发者目录偏移量和TGA文件扩展格式签名三部分组成,用于验证TGA文件扩展格式,并可以确定扩展区域和开发者字典的位置。

**

TGA文件格式分析

**
在这里插入图片描述

文件由Photoshop 导出为TGA格式

在这里插入图片描述

前18字节:
无图像信息字段
没有使用颜色表(颜色表规约字段为0)
图像格式为未压缩的真彩图像
图像左下角的水平和垂直坐标均为0
图像宽度为400,高度为380 即图像为400*380
像素深度 24bit

在这里插入图片描述

无图像信息字段,故无Image ID字段
无颜色表类型字段,故无Color Map Data字段
19 - 456018 字节为图像数据字段
则此字段中的数据表示各个像素的RGB值,共400380个像素,即图像数据字段共有400380*3=456000个字节,除去头部18字节,内存与文件格式吻合。

在这里插入图片描述

末尾26字节尾部
无Extension Area
无Developer Area
存在字符串为TRUEVISION-XFILE的签名,为v2.0的TGA扩展格式文件
(每一张TGA 2.0格式下图片固定值)
最后的倒数第2个字节:TGA文件结束字符——ASCII码 ”.”
最后一个字节:文件结束符为0


http://www.niftyadmin.cn/n/792315.html

相关文章

RGB2YUV相互转换实验

rgb2yuv 实验思路&#xff1a; main函数关键代码&#xff1a; #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include "rgb2yuv.h" #define u_int8_t unsigned __int8 #define u_int unsigned __int32 #define u_int32_t un…

WPF使用声音资源

1.在项目上右键&#xff0c;增加Resources文件夹&#xff1b;在Resources文件夹上右键&#xff0c;增加Audio文件夹&#xff1b;往Audio文件夹中增加声音资源文件&#xff1a;didi.wav。 2.右键didi.wav&#xff0c;选择属性&#xff0c;设置属性复制到输出目录为始终复制&…

javaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作?

JavaCV入门指南系列: JavaCV入门指南:序章(看完本章后,不想看原理的小伙伴可直接跳转到《快速上手篇》) JavaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作 JavaCV入门指南:调用opencv原生API和JavaCV是如何封装了opencv的图像处理操作 JavaCV入…

javaFX游戏开发实战:从零开始开发和实现自娱自乐小游戏:奥赛罗(黑白棋、翻转棋),支持可落子位置提示,原创翻转算法,基于JavaFX2.0的Canvas画板,界面逻辑与算法分离结构

前言: 这次是从前就特别喜欢玩的“奥赛罗”,但是国内玩的人不多,后来也就慢慢淡忘了。偶然想起来,觉得还是挺有意思的,就着手开发了。之前已经写过两三个小游戏,所以开发起来也很顺畅,原以为利用业余时间几天应该能写完的,断断续续写了两三个星期。中间觉得不好又推翻…

BMP2YUV文件转化

BMP文件数据中的四层结构&#xff0c;分别是位图文件头、位图信息头、调色板、实际的位图数据。从位图信息头中提取图像宽高、实际的位图数据所在数据&#xff0c;从BMP中读取实际的位图数据&#xff0c;进而索引调色板数组得到每一数据的实际物理意义&#xff0c;即查找得到各…

开始整理过去的知识点

最近开始找工作&#xff0c;知识点太多&#xff0c;想好好整理一下。 好久没有写博客了&#xff0c;哇&#xff0c;距离上一篇随笔整整5个月了&#xff01;我够懒&#xff01;够“坚持不懈”&#xff01; 真对自己无语~~~ 好吧&#xff0c;开始&#xff0c;Just do it!转载于:h…

LZW解码原理和实现算法及效率评估

LZW解码原理和实现算法* &#xff1a; LZW解码算法开始时&#xff0c;译码词典和编码词典相同&#xff0c;包含所有可能的前缀根。具体解码算法如下&#xff1a; 步骤1&#xff1a;在开始译码时词典包含所有可能的前缀根。 步骤2&#xff1a;令CW&#xff1a;码字流中的第一个…

云游戏流媒体整体架构设计(云游戏流媒体技术前瞻,最近云游戏概念很火,加之对流媒体技术略有研究,简单写一些)

前言&#xff1a; 遥想当年阿法狗战败一众围棋国手&#xff0c;风气一转&#xff0c;似乎所有人都懂AI。这次谷歌又放出了stadia&#xff0c;国内鹅厂再次跑步进场&#xff0c;贵州某xx云提前布局。 闲来无事&#xff0c;尝试体验了一下贵州某xx云的云游戏&#xff08;不打广…