Truevision TGA (.tga)

Truevision 标准

TGA(Targa)是一种与 Truevision 的 TARGA 视频采集卡相关的栅格格式,尤其在 20 世纪 90 年代和 2000 年代用于一些图形及游戏资源制作流程。

将 TGA 转换为 PNG

免费的浏览器端 TGA 转 PNG 转换器。在您的设备上即时转换文件。

检查与元数据

操作系统和文件分析器通过检查开头的二进制字节序列来识别 TGA 文件:

选择或将文件拖放到此处

隐私保护 - 文件不会离开您的设备

或粘贴 Ctrl+V
零网络传输隐私保证: 上传至外部服务器的数据为 0 字节。所有处理均在您的浏览器沙箱中本地完成。

字节级文件头签名 (魔数)

操作系统和文件分析器通过检查开头的二进制字节序列来识别 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 (当前)PNGBMPDDS
视频游戏纹理用途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 图像,且无需传输任何数据。