我正在努力解决“每个样本位数”的 IDF 标签。根据文档,该字段的类型是
short
Code 258 (hex 0x0102)
Name BitsPerSample
Type SHORT
Count N = SamplesPerPixel
Default 1
有效 tiff 文件中的标签在十六进制中看起来像这样:
02 01 03 00 03 00 00 00 E2 01 00 00
02 01
- 标签 25803 00
- 短型03 00 00 00
- 值的数量 3E2 01
- 这就是我遇到的问题。这3条短裤怎么样?00 00
- 到下一个 ifd 标签的偏移量 0这三个短片如何编码为
E2 01
以及如何读取它们?我期望 3 个十进制值 8、8、8 或 16、16、16。我缺少什么? Short 是一个 8 位值。
我正在使用
struct
来读取和写入标签,这让我感到困惑,因为这对于单个值 482 作为无符号短整型来说毫无意义(H
):
struct.pack('<HHIHH', 258, 3, 3, 482, 0)
h short integer 2 (2)
H unsigned short integer 2 (2)
我敢打赌我在这里遗漏了一些明显的东西。非常欢迎任何见解:-)
对于只有一个分量(例如灰度或黑白)的数据,您可以直接在标签中对每个样本的最小、最大、位数进行编码,对于 RGB 数据,标签提供指向这些值的地址的指针。
所以在这种情况下它是数据在文件中的偏移量。事实上,在我的测试文件中,它指向 3 个短值 8。我在 tiff 文档中没有看到这一点,只在这里找到了这个在线参考: