CGIF:無圧縮GIF
無圧縮GIFについて
ここでは、無圧縮GIFについて説明したいと思います。
GIFファイルのイメージデータは、決まりさえ守れば、色々な書き方があります。
無圧縮のGIFは、GIFファイルの別な箇所で無圧縮と宣言するわけではなく、イメージデータのみを書き換えることで作成できます。
LZW圧縮法(LZW辞書)でイメージのデータ列
0 -> f -> f -> f -> f -> f -> f -> f -> f
がLZW辞書を使って圧縮されることを説明しました。
それとは別な方法として、データ列を最後まで二つずつ見てゆき、前のデータをprefixに、後のデータをsuffixに代入していけば、無圧縮のイメージデータを作成できます。
具体的には、まず最初の二つのデータ0fを0x102に割り当てます。
prefixが0x0、suffixが0xfとなります。
次に、前回取り出した順列のsuffixから、二つのデータffを0x103に割り当てます。
prefixを0xf、suffixを0xfと代入します。
以下同様に、前回取り出した順列のsuffixから二つずつデータを取り出し、前のデータに対応するカラーインデックスをprefixに、後のデータに対応するカラーインデックスをsuffixに代入してゆきます。
すると、以下のようになります。
コードに割り当てられた内容 |
コード |
prefixの中身 | suffixの中身 |
カラーテーブルのindex |
0x0 | | |
0x1 |
0x2 |
・ |
・ |
・ |
0xff |
クリアコード |
0x100 | |
終了コード |
0x101 | |
新しく作成されたコード |
0x102 | 0x0 | 0xf |
0x103 | 0xf | 0xf |
0x104 | 0xf | 0xf |
0x105 | 0xf | 0xf |
0x106 | 0xf | 0xf |
0x107 | 0xf | 0xf |
0x108 | 0xf | 0xf |
0x109 | 0xf | 0xf |
後はLZW圧縮法(イメージデータ)で説明しましたように、prefixを登録した順に並べ、最後に登録したsuffixをその後部に付け足した一つのデータあたり9ビットのデータ列
0 -> f -> f -> f -> f -> f -> f -> f -> f
の最初にクリアコード(9ビット)を付け足し、最後に終了コード(9ビット)を付け足しまして、8ビットずつ切ったものをファイルに書き込めば、無圧縮GIFが作成されます。
TOP
LZW圧縮について
戻る