Truevision TGA (.tga)
Truevision 标准TGA(Targa)是一种与 Truevision 的 TARGA 视频采集卡相关的栅格格式,尤其在 20 世纪 90 年代和 2000 年代用于一些图形及游戏资源制作流程。
将 TGA 转换为 PNG
免费的浏览器端 TGA 转 PNG 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 TGA 文件:
字节级文件头签名 (魔数)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 TGA 文件:
十六进制签名 (偏移量 0):
没有固定签名ASCII 表示形式: 没有固定签名
标准化: Truevision TGA 文件格式规范 v2.0
技术规格
| 容器架构 | 18 字节固定文件头,后接图像 ID、颜色映射表、光栅像素数据,以及可选的 v2.0 文件尾 |
| 压缩方式 | 未压缩的原始扫描线,或基于数据包的无损游程编码(RLE) |
| 字节序 | 小端序(Intel x86) |
| 色彩空间 | 设备 RGB |
| 通道与结构 | 8 位灰度、16 位 RGB(5-5-5-1)、24 位 RGB,或带 Alpha 的 32 位 RGBA |
| 最大尺寸 | 65,535 × 65,535 像素(16 位尺寸字段) |
| 透明度 | 支持完整的 8 位 Alpha 通道透明度(32 位模式)或 1 位 Alpha(16 位模式) |
| 流式传输与渐进式加载 | 支持按扫描线顺序流式处理,可采用从上到下或从下到上的方向 |
技术对比矩阵:TGA 对比同类产品
| 技术属性 | TGA (当前) | PNG | BMP | DDS |
|---|---|---|---|---|
| 视频游戏纹理用途 | 20 世纪 90 年代至 2000 年代广泛采用的传统标准 | 现代 2D 用户界面和网页素材 | Windows 传统位图格式 | DirectX 现代压缩 GPU 格式 |
| 透明通道支持 | 支持完整的 8 位 Alpha(32 位模式) | 支持完整的 8 位 Alpha | 有限支持 32 位 Alpha | 支持 DXT/BC 压缩 Alpha |
| 压缩算法 | 无压缩或分组 RLE | 无损 Deflate(缩小约 60%) | 无压缩 / RLE | 直接 GPU 块压缩 (BC1-BC7) |
| 签名位置 | 26 字节文件尾(“TRUEVISION-XFILE.”) | 第 0 字节处的文件头(“‰PNG....”) | 第 0 字节处的文件头(“BM”) | 第 0 字节处的文件头(“DDS ”) |
常见损坏模式与十六进制恢复指南
图像渲染上下颠倒或水平镜像。
根本原因: 解码器对图像描述符位(第 17 字节中的第 4 位和第 5 位)读取错误或反转。
恢复方法: 切换垂直/水平翻转标志,或使用 File2File.app TGA 转换器进行转换。
安全分析与解析器攻击向量
TGA 解码器处理基于包的 RLE 流,其中格式错误的运行长度计数可能会触发越界堆写入。
已知攻击向量
- RLE 包长度超出目标扫描线缓冲区边界。
- 读取超出声明的颜色表深度的颜色表条目时发生缓冲区溢出。
- 分配 width × height × (bpp / 8) 大小的内存缓冲区时发生整数溢出。
防御性最佳实践: 在 RLE 包解包期间强制执行严格的每扫描行边界检查。
历史渊源与里程碑
1998Valve 的《半条命》和 id Software 的《雷神之锤 II》将 TGA 推广为标准的视频游戏纹理素材格式。
1989Truevision 发布 TGA 文件格式 v2.0,增加了标准化的 26 字节"TRUEVISION-XFILE"页脚。
1984Truevision 推出 TARGA(Truevision 高级光栅图形适配器)视频卡和 TGA 格式。
核心优势与特点
- 极其简单的解码架构允许以最小的 CPU 开销直接加载 GPU 纹理内存。
- TGA 可存储包含 Alpha 通道的 24 位 RGB 或 32 位 RGBA 数据,因此曾适用于部分游戏纹理、精灵图和贴花制作流程。
- 支持无压缩和轻量级无损 RLE 压缩。
技术局限与劣势
- 比 DDS、KTX2 或 PNG 等现代压缩纹理格式占用更大的文件空间。
- 缺乏原生的色彩配置文件管理(没有嵌入的 ICC 配置文件)。
- 最初的 v1.0 TGA 文件在第 0 字节处缺少标准化的魔数(通过头字段和页脚进行识别)。
趣味技术冷知识
- TGA 的创建是为了在标准 PC 显示器甚至无法显示 24 位颜色之前,在 IBM PC 上捕获广播视频帧。
- TGA 2.0 文件很特别:其魔数签名(“TRUEVISION-XFILE.”)存储在文件末尾,而不是开头。
- 几乎每一个 20 世纪 90 年代主流的 3D 游戏引擎(从 id Tech 到虚幻引擎)都直接从 .TGA 文件中加载纹理素材。
常见技术问题
为什么游戏开发人员喜欢 TGA 格式?
因为 TGA 文件是未压缩的或简单的 RLE,允许游戏引擎将 32 位纹理和透明度通道直接加载到显存中,而无需缓慢解压。
如何在字节 0 处没有魔数(magic bytes)的情况下识别 TGA 文件?
现代 TGA 2.0 文件在文件的最后 26 个字节中以 ASCII 字符串“TRUEVISION-XFILE.”结尾。
如何将 TGA 转换为 PNG?
您可以使用 File2File.app 直接在浏览器中将 TGA 纹理转换为高质量的 PNG 或 JPG 图像,且无需传输任何数据。