LZW解压缩:为什么在TIFF条261而不是257中遇到第一个字典代码,或者我误读了它?

时间:2015-01-30 02:58:12

标签: tiff lzw

我有一个普通的RGB文件,在Photoshop中保存为TIFF,大约1000像素。第一行由3个像素组成,所有像素均为十六进制4B红色,B0绿色,78蓝色,其余部分为白色。

条带是LZW编码的,条带的初始字节是:

80 12 D6 07 80 04 16 0C B4 27 A1 E0 D0 B8 64 36 ...... (实际上只有前7个字节对我的问题很重要。)

在9位段中,这是:

 100000000  001001011  010110000  001111000  000000000  100000101  100000110  ...
  (0x100)     (0x4B)     (0xB0)     (0x78)     (0x00)    (0x105)    (0x106)

根据我的理解256(0x100)是一个复位代码,但为什么在那之后的第一个扩展代码261(0x105)而不是257?我希望这指向的第二个像素的4B / B0对(它很可能是),但是解压缩算法如何知道将4B / B0置于261而不是257?有人可以解释我在这里失踪的东西吗? .tif文件中的其他地方可能有什么东西可以表明这一点吗?非常感谢。 〜

1 个答案:

答案 0 :(得分:1)

让我们看看

256 (100h) is Clear
257 (101h) is EOF

在你的情况下,然后

4Bh B0h is 258 (102h)
B0h 78h is 259 (103h)
78h 00h is 260 (104h)
00h 00h is 261 (105h)

对我来说很好看。 LZW实际上可以在添加到表格之前编码一个字符。