.tga 图像:应该用一个词表示的值只有在我读到前半个词时才是正确的
.tga Image: Value that should be represented by a word is only correct if I read the first half word
我有以下问题:我正在尝试读取 tga 文件的 header,所以我继续 Wikipedia 获取 tga 文件的结构:它说图片的宽和高以1个字或2个字节的数据存储在header中。但是后来我看了一个tga文件的十六进制代码header(前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 - 第一个字节)。
你对此有解释吗?
让我们在终端中使用 ImageMagick 制作一个 513px 宽和 32px 高的图像并十六进制转储它:
magick -size 513x32 xc:red tga: | xxd -c 16
我们得到这个:
根据您的维基百科link。字段如下:
- 红色 - 字段 1 - ID 长度
- 绿色 - 字段 2 - 颜色图类型
- 蓝色 - 字段 3 - 图像类型
- 青色 - 字段 4 - 颜色图规范
- 洋红色 - x,y 原点 - [0,0]
- 黄色 - 宽度
- 白-高
所以,让我们看看宽度。我把它设为 513 像素,即 2 x 256 + 1。所以,希望你能看到 Targa 规范是 little-endian,其中最低有效字节在前,更多重要字节排在第二位。这意味着 0102
是 1
小的、无关紧要的字节和 2*256 大的、胖字节。同样,高度的 20000
表示 2 批 16 小字节和零批大、胖字节。
TLDR:Targa 格式是小端格式。最不重要的字节在前,然后是更重要的大字节。
我有以下问题:我正在尝试读取 tga 文件的 header,所以我继续 Wikipedia 获取 tga 文件的结构:它说图片的宽和高以1个字或2个字节的数据存储在header中。但是后来我看了一个tga文件的十六进制代码header(前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 - 第一个字节)。
你对此有解释吗?
让我们在终端中使用 ImageMagick 制作一个 513px 宽和 32px 高的图像并十六进制转储它:
magick -size 513x32 xc:red tga: | xxd -c 16
我们得到这个:
根据您的维基百科link。字段如下:
- 红色 - 字段 1 - ID 长度
- 绿色 - 字段 2 - 颜色图类型
- 蓝色 - 字段 3 - 图像类型
- 青色 - 字段 4 - 颜色图规范
- 洋红色 - x,y 原点 - [0,0]
- 黄色 - 宽度
- 白-高
所以,让我们看看宽度。我把它设为 513 像素,即 2 x 256 + 1。所以,希望你能看到 Targa 规范是 little-endian,其中最低有效字节在前,更多重要字节排在第二位。这意味着 0102
是 1
小的、无关紧要的字节和 2*256 大的、胖字节。同样,高度的 20000
表示 2 批 16 小字节和零批大、胖字节。
TLDR:Targa 格式是小端格式。最不重要的字节在前,然后是更重要的大字节。