2012-11-04 85 views
1

我已經閱讀了大量關於GIF LZW解壓縮的文章,但我仍然對它是如何工作的或者在編碼方面如何解決編碼更多的煩雜問題感到困惑。GIF LZW解壓提示?

據我瞭解,當我到達的GIF的LZW壓縮數據的字節流,流告訴我:

最小的代碼大小,位AKA號的第一個字節開始與。

現在,據我所知,我必須爲此清除代碼添加一個,或者爲清除代碼和EOI代碼添加兩個。但我很困惑這是哪一個?假設我有3個顏色代碼(01,10,11),假設EOI代碼(如00),跟隨最小代碼大小(2)的字節是2位,還是3位考慮明確的代碼?或者是明確的代碼/ EOI代碼都已經考慮到最小尺寸?

第二個問題是,從文件中讀取動態大小位的最簡單方法是什麼?因爲從偶數編號的字節(8)中讀取奇數位(3位,12位等)聽起來像是可能是混亂和錯誤的?

+0

有人可以給這個提示嗎? – user1433767

回答

0

從第二個問題開始:是的,您必須從8位字節流中讀取動態大小的位。您必須跟蹤您正在閱讀的大小以及之前讀取操作(用於正確放置文件中'下一個字節')的未使用位的數量。

IIRC有8個比特的最小碼量,這將使您的256(底爲10)和端部257.第一存儲的代碼輸入的清晰代碼然後被258.

我不知道爲什麼你沒有查找其中一個公共領域圖形庫的來源。我知道我沒有,因爲在1989年(!)沒有使用圖書館,沒有完整的描述。我必須從示例可執行文件(用於Compuserve的MS-DOS)實現一個解碼器,該解碼器可以顯示圖像和一些GIF文件,所以我知道這可以完成(但它不是花費時間的最有效方式)。