CGIF:LZW圧縮法2
LZW圧縮法(イメージデータ)
前回左の3×3のGIF画像が、新しいデータ列が現れるたびにコードに割り当てることで、圧縮されていることを見ました。
その結果、以下のprefixとsuffixを持つ辞書テーブルが作成されました。
コードに割り当てられた内容 |
コード |
prefixの中身 | suffixの中身 |
カラーテーブルのindex |
0x0 | | |
0x1 |
0x2 |
・ |
・ |
・ |
0xff |
クリアコード |
0x100 | |
終了コード |
0x101 | |
新しく作成されたコード |
0x102 | 0x0 | 0xf |
0x103 | 0xf | 0xf |
0x104 | 0x103 | 0xf |
0x105 | 0x104 | 0xf |
0x106 | 0xf | 0xa |
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圧縮について
戻る