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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 这是特殊的一天

    人生中特殊的日子可能并不多,真心不多!日子的过的很快,转眼三年已经过去。那年的今天,我从一个学生迈向社会! 那年的今天,是我入职的第一天! 也就是在那年的今天,我遇到了我爱的人!曾经梦想的毕业后如何如何,在现实面前,一切都是残酷的。三年很快,十年也很快,我对自己的十年之约,已经是快到了!2020这是我对自己的十年之约,而现在看来这个十年之约远比我想象的还要远。这…

    2022年2月27日
    41
  • charls使用笔记[通俗易懂]

    charls使用笔记[通俗易懂]一、https请求:PC端:1.安装charlesca证书选择help|InstallCharlesCASSLCertificate然后会弹出证书信息,选择安装证书,下一步,将证

    2022年8月3日
    7
  • linux 下查看有当前文件夹有多少个文件

    linux 下查看有当前文件夹有多少个文件

    2021年10月15日
    55
  • 亚信安全发布2021年挖矿病毒专题报告,聚焦挖矿病毒进化与治理

    亚信安全发布2021年挖矿病毒专题报告,聚焦挖矿病毒进化与治理供稿|亚信安全出品|CSDN云计算近日,《亚信安全2021年挖矿病毒专题报告》正式发布(以下简称《报告》)。《报告》以2021年亚信安全威胁情报与服务运营部门所监测、分析和处置的挖矿病毒事件为基础,对各类挖矿病毒和攻击进行分析梳理与情况总结,并且深度探究未来可能会演化的方向,以此帮助更多用户,以更安全、更高效、更全面的行动做出安全规划,为挖矿病毒治理提供了参考路径。2021年挖矿病毒大事件全面回顾2021全年,亚信安全共拦截挖矿病毒516,443次。《报告》基于此整体梳.

    2022年5月20日
    58
  • case label does not reduce to_class not loaded

    case label does not reduce to_class not loadedClassCastException出现原因解决办法出现原因抛出以指示代码已尝试将对象强制转换为它不是实例的子类。例如,以下代码生成一个ClassCastException:对象x=新整数(0);System.out.println((String)x);解决办法这种异常我也不知道有什么能够完全解决的办法,但是可以同instanseof来避免例如:Pet宠物类   Dog狗狗类(继承Pet)  Penguin企鹅类(继承Pet)  Dogdog=(Dog)pet

    2025年10月9日
    3
  • phpstrom 2021.3激活码 3月最新注册码

    phpstrom 2021.3激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    41

发表回复

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

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