大家好,又见面了,我是你们的朋友全栈君。
TGA文件格式概述
【OpenGL】游戏编程常用TGA图像格式详解以及加载纹理编程实现
分析TGA格式图片
使用FlexHEX打开text.tga
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的图像信息字段区域还需要进一步了解
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126395.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...