前言
不知道出于某種原因厢汹,讓我突然冒出想用JavaScript
解析GIF
的念頭。于是我花費(fèi)了數(shù)天的時(shí)間去研究這玩意兒敬特,好在最后還是得到了我要的結(jié)果。特作此文以記之牺陶。
GIF格式解析
這是第一步伟阔。其實(shí)這個(gè)是很簡(jiǎn)單就可以實(shí)現(xiàn)的,只要你細(xì)心一點(diǎn)掰伸,具體怎么解析就不詳述了皱炉。下面附上幾個(gè)關(guān)于GIF
文件格式的解釋。
LZW解碼
如果你已經(jīng)看過(guò)上面兩個(gè)鏈接的內(nèi)容狮鸭,那么你就會(huì)知道GIF
的顏色索引值是被LZW
編碼過(guò)的合搅。至于這個(gè)LZW
的算法實(shí)現(xiàn)我也是似懂非懂的,先附上相關(guān)鏈接歧蕉。
下面來(lái)說(shuō)說(shuō)我的理解灾部。
比如當(dāng)讀取的索引數(shù)據(jù):
[0, 151, 9 ...]
LZW
的編碼長(zhǎng)度是8
。
那么初始讀取9
位數(shù)據(jù)惯退,如何讀取這9
位呢赌髓?將索引數(shù)據(jù)轉(zhuǎn)成2
進(jìn)制。
00000000 10010111 00001001
那么就是按每個(gè)字節(jié)的低位到高位開始讀取。
100000000 011001011 ...000010