TGA文件分析

TGA文件格式概述【OpenGL】游戏编程常用TGA图像格式详解以及加载纹理编程实现分析TGA格式图片使用FlexHEX打开text.tgatest是用像素笔画出的4*4的图像,第一行为白色和三基色,第四行为三补色和黑色,其余两行为白色打开后可以看到结果十分简单:第一个字节是0,表示没有图像的信息字段第二个字节是0,表示没有颜色表第三个字节总是2,表示此类型为格式2接下来五个字节全为0,可以忽略第九第十个字节为0,表示图像X坐标起始位置为0(最左)第十一、十二个字节为0,表示图

大家好,又见面了,我是你们的朋友全栈君。

TGA文件格式概述

在这里插入图片描述
【OpenGL】游戏编程常用TGA图像格式详解以及加载纹理编程实现

分析TGA格式图片

使用FlexHEX打开text.tga

test是用像素笔画出的4*4的图像,第一行为白色和三基色,第四行为三补色和黑色,其余两行为白色
test是用像素笔画出的4*4的图像,第一行为白色和三基色,第四行为三补色和黑色,其余两行为白色

在这里插入图片描述
打开后可以看到结果十分简单:

  • 第一个字节是0,表示没有图像的信息字段
  • 第二个字节是0,表示没有颜色表
  • 第三个字节总是2,表示此类型为格式2
  • 接下来五个字节全为0,可以忽略
  • 第九第十个字节为0,表示图像X坐标起始位置为0(最左)
  • 第十一、十二个字节为0,表示图像Y坐标起始位置为0(最下)
  • 第十三、十四个字节为4,表示图像宽度为4——与设置吻合
  • 第十五、十六个字节为4,表示图像高度为4——与设置吻合
  • 第十七个字节为24,表示该图像为TGA24——与设置吻合,图像深度为24
  • 第十八个字节为0,是图像描述符字节,TGA24此字节为0

接下来有三个偏移量可变,长度不确定的区域:

  • 首先此文件颜色表类型为0,颜色表数据区域不存在
  • 从第十九字节开始三个三个看,FF00FF、00FFFF、FFFF00、000000,可以看出存储的是三补色以及黑色像素的数据。也就是说从第十九字节开始进入图像数据区域。
  • 要注意此文件的存储方式为从左到右、从下到上。即第一个存储的是最左下角像素的数据,依次往右存储,存完此行存上一行,存储的最后一个像素为最右上角的像素。
  • 计算4 * 4 * 3 = 48,往后数这么多个到第六十七个字节为下一区域,也就是图像信息字段区域

使用FlexHEX打开zoe.tga

在这里插入图片描述
zoe图像文件相较于test色彩丰富,文件也较大

在这里插入图片描述
下面分析zoe.tga与test.tga不同的部分:

  • 第十三、十四个字节为4,表示图像宽度为950
  • 第十五、十六个字节为4,表示图像高度为559
  • 第十九字节开始的图像数据区域三个三个看:08715E、09725F……
    验证确实是图像最左下角的像素颜色
    在这里插入图片描述
  • 后面都是各像素数据,图像信息字段区域在最后

总结和反思

  • 每遇到新的文件格式从最简单像素图开始分析,了解他的长宽、深度、存储方式,再慢慢分析复杂的文件
  • 对TGA的图像信息字段区域还需要进一步了解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126395.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月7日 下午4:20
下一篇 2022年4月7日 下午4:20


相关推荐

  • 气质如兰 一代才女林徽因

    气质如兰 一代才女林徽因在民国时期的著名才女中 林徽因的才艺似乎比萧红和张爱玲等显得更全面一些 人生际遇也更幸运 她不仅最早加入了 新月社 在诗歌 小说 散文 戏剧 绘画 翻译等方面成就斐然 还致力于建筑专业 成为我国第一位女性建筑学家 被胡适誉为 中国一代才女 她几乎标志丁一个时代的颜色 出众的才 倾城的貌 情感生活也像一个春天的童话 幸福而浪漫 nbsp nbsp nbsp 气质如兰的多才少女 nbsp nbsp nbsp nbsp 林徽因 1904 年 6 月 1

    2026年3月18日
    3
  • pycharm只能安装在c盘吗_pycharm自带python吗

    pycharm只能安装在c盘吗_pycharm自带python吗昨天大家对我(Python)有了一定的了解,那么今天带大家更加系统化的认识一下我,已经了解我的工作方式先说一下如果让我去做一件事情得需要那些“配置”,其实很简单的,不要把我想的太复杂,毕竟还是个单纯的孩子。让我做事当然是有一条一条简短的指令,汇聚在一起然后成为一个模块,之所谓”不积跬步无以至千里,不积小流无以成江海“,正确的指令汇聚在一起我们可以改变世界!咳咳:正经的说一边”1、python是由一…

    2022年8月27日
    3
  • js怎么能取得多选下拉框选中的多个值?

    js怎么能取得多选下拉框选中的多个值?

    2021年11月8日
    45
  • 过滤器与拦截器详解图_过滤器 拦截器

    过滤器与拦截器详解图_过滤器 拦截器过滤器详解依赖于servlet容器,实现基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,过滤器一般用于登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换等等操作,便于代码重用,不必每个servlet中进行冗余操作。Java中的Filter并不是一个标准的Servlet,它…

    2022年8月23日
    8
  • 讯飞星火大模型将亮相大阪世博会中国馆

    讯飞星火大模型将亮相大阪世博会中国馆

    2026年3月14日
    2
  • 冒泡排序算法,C语言冒泡排序算法详解

    冒泡排序算法,C语言冒泡排序算法详解冒泡排序是最简单的排序方法,理解起来容易。虽然它的计算步骤比较多,不是最快的,但它是最基本的,初学者一定要掌握。冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。比如对下面这个序列进行从小到大排序:9021132-5834第一轮:

    2022年6月25日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号