CGIF:LZW圧縮法2

LZW圧縮法(イメージデータ)


前回左の3×3のGIF画像が、新しいデータ列が現れるたびにコードに割り当てることで、圧縮されていることを見ました。
その結果、以下のprefixとsuffixを持つ辞書テーブルが作成されました。

コードに割り当てられた内容 コード prefixの中身suffixの中身
カラーテーブルのindex 0x0
0x1
0x2
0xff
クリアコード 0x100
終了コード 0x101
新しく作成されたコード 0x1020x00xf
0x1030xf0xf
0x1040x1030xf
0x1050x1040xf
0x1060xf0xa

prefixを登録した順に並べ、最後に登録したsuffixをその後部に付け足したデータ列
0 -> f -> 103 -> 104 -> f -> f
の最初にクリアコードを付け足し、最後に終了コードを付け足します。
clear code : 1 0000 0000
       0x0 : 0 0000 0000
       0xf : 0 0000 1111
     0x103 : 1 0000 0011
     0x104 : 1 0000 0100
       0xf : 0 0000 1111
       0xf : 0 0000 1111
  end code : 1 0000 0001
のように9bitで揃えます。
それを
1 0000 0001 <- 0 0000 1111 <- 0 0000 1111 <- 
1 0000 0100 <- 1 0000 0011 <- 
0 0000 1111 <- 0 0000 0000 <- 1 0000 0000
と一列に並べて下の位から8ビット(1バイト)ずつ格納していきます。
80 <- 83 <- C1 <- F0 <- 48 <- 18 <- 3C <- 01 <- 00
のようになります。

実際イメージは、このようなLZW圧縮法でファイルに格納されています。

TOP LZW圧縮について 戻る