有懂lzw算法的,了解GIF编码的请进,求救!!!!!
该段光栅数据为非交织的,全局颜色列表尺寸为4
00 是黑色
01 是图形白色
02 是背景白色
03 是黑色
其中透明色是02
00001100:00000000 宽度12pix
00001100:00000000 长度12pix
00000000:00000010 不用局部颜色表,非交织,不按频率排序,初始lzw码表大小为2
00010001 数据块长度为17
====光栅数据开始====
10010100
10001111:10101001
11001011:11101101
00010111:10011110
01001100:00000000
00110100:00101011
10110000:11000010
01111010:11110111
01101001:00010100
====光栅数据结束====
00000000:00111011 块终结符,图形终结符3B
请大家帮帮忙,我在解析时遇到困难,100是CLEAR ,可是紧接着怎么是101 eof呢?? 百思不得其解
我倒推00101为终止EOF 可是得到的字符和我自己对图形进行压缩的结果又是不一样的
纠结了4、5天了 拜托大家帮帮忙,摆脱了。。。。。
这是我根据图像按照LZW压缩得到的数据
a:00
b:01
c:10
d:11
clear:100
eof:101
输入字符串 前缀 后缀 entry output string code
c c
c c c cc c cc 6
c c c
c cc c 6c 6 ccc 7
c c c
c cc c
c ccc c 7c 7 cccc 8
c c c
c cc c
c ccc c
c cccc c 8c 8 ccccc 9
c c c
c cc c
c ccc c
c cccc c
c ccccc c 9c 9 cccccc 10
c
c
c
c
c
c cccccc c 10c 10 ccccccc 11
c
c
c
c
c
c
c ccccccc c 11c 11 cccccccc 12
c
c
c
c
c
c
c
c cccccccc 12c 12 ccccccccc 13
c
c
c
c
c
c
c
c
c 13 c 13c 13 cccccccccc 14
c
c
c
c
c
c
c
c
c
c 14 c 14c 14 ccccccccccc 15
c c c
c cc c
b ccc b 7b 7 cccb 16
c b c bc b bc 17
c c
c
c
c
c
c
c
c
c
c
c 15 c 15c 15 cccccccccccc 18
c
c
c
c
c
c
c
c
c
c
c
c 18 c 18c 18 ccccccccccccc 19
c c c
c cc c
c ccc c
c cccc c
a ccccc a 9a 9 ccccca 20
a a a aa a aa 21
c a c ac a ac 22
c c c
c cc c
c ccc
c cccc
c ccccc
c
c
c
a 12 a 12a 12 cccccccca 23
c a c
c ac a 22a 22 aca 24
a a a
c 21 c 21c 21 aac 25
c c
c
c
c
c
c
c
a 12 a
c 23 c 23c 23 ccccccccac 26
c c c
a cc a 6a 6 cca 27
c a c
c ac c 22c 22 acc 28
c c
c
c
c
c
c
c
a 12 a
a 23 a 23a 23 ccccccccaa 29
c a c
c ac c
c 28 c 28c 28 accc 30
c c c
c cc c
c
c
c
c
c
c
c
c
c
c
c 19 c 19c 19 cccccccccccccc 31
c c c
c cc c
c ccc c 8 8
EOF
[解决办法]
在网上可以找到的资料 都没有讲 如和将得到的变长压缩码如何以byte打包 问题就出在 打包上了
我最后参考 英文的维基百科 才发现问题的
维基百科中讲的实例是 9位压缩码开始的数据的打包
由此结合 已知的图像压缩码 和图像GIF编码 推测出 3位压缩码开始的数据的打包规则
BUILD 8-BIT BYTES
Because the LZW compression used for GIF creates a series of variable length
codes, of between 3 and 12 bits each, these codes must be reformed into a
series of 8-bit bytes that will be the characters actually stored or
transmitted. This provides additional compression of the image. The codes are
formed into a stream of bits as if they were packed right to left and then
参考:
http://en.wikipedia.org/wiki/Graphics_Interchange_Format
[解决办法]
GIF的位流是左侧连接的。
例如——