首页 > 解决方案 > .tga 图像:应该由一个单词表示的值只有在我阅读前半个单词时才是正确的

问题描述

我有以下问题:我正在尝试读取 tga 文件的标题,因此我在Wikipedia上获取了 tga 文件的结构:它说图像宽度和高度存储为一个单词或 2 个字节标题中的数据。但后来我查看了 tga 文件头的十六进制代码(前 18 个字节):

00 00 02 00 00 00 00 00 00 00 00 00 20 00 20 00 20 08

这里最后的第三和第二个词是宽度和高度。所以根据这个我的 tga 文件应该是 8.192px 宽和 8.192px 高(0x2000),但实际上图像只有 32px 宽和 32px 高(0x20 - 第一个字节)。

你对此有什么解释吗?

标签: imagefiletga

解决方案


让我们在 Terminal 中使用ImageMagick制作一个 513px 宽和 32px 高的图像,然后进行十六进制转储:

magick -size 513x32 xc:red tga: | xxd -c 16

我们得到了这个:

在此处输入图像描述

根据您的维基百科链接。字段如下:

  • 红色 - 字段 1 - ID 长度
  • 绿色 - 字段 2 - 颜色图类型
  • 蓝色 - 字段 3 - 图像类型
  • 青色 - 字段 4 - 颜色映射规范
  • 洋红色 - x,y 原点 - [0,0]
  • 黄色 - 宽度
  • 白色 - 高度

所以,让我们看看宽度。我将其设为 513 像素,即 2 x 256 + 1。因此,希望您能看到 Targa 规范是little-endian,其中最低有效字节排在第一位,而更高有效字节排在第二位。这意味着小01021、微不足道的字节和 2*256 大的、胖的字节。同样,20000对于高度意味着 2 批 16 个小字节和零批大的胖字节。

TLDR:Targa 格式是小端格式。最不重要的字节首先出现,然后是更重要的更大字节。


推荐阅读