GIF ファイルフォーマット


GIF ファイル全体構造
  解説
ファイルヘッダ 共通情報(13バイト)

共通パレット(可変長)
ブロックデータ Graphic Control Extension
拡張データ(可変長)
Image Block
画像データ(可変長)
後書き 0x3B(1バイト)
ブロックの終わりを示す


ファイルヘッダ [GIF Header]

アドレス (サイズ)名称内容
0x0000 (3)Signature GIF ファイルシグネチャ。'GIF'
0x0003 (3)Version GIF バージョン。'87a' や '89a' 等がある
0x0006 (2)Logical Screen Width 画像の幅
0x0008 (2)Logical Screen Height 画像の高さ
0x000A (1)Packed Fields Global Color Table Flag(1 Bit)
 共通パレットの有無
Color Resolution(3 Bits)
 この値(0〜7)に1を足した値が、画像1ドットを表わすのに必要なビット数
Sort Flag(1 Bit)
 共通パレットのソートの有無
Size of Global Color Table(3 Bits)
 この値(0〜7)に1を足した値をnとして、2のn乗が共通パレットの個数
0x000B (1)Background Color Index 背景色のパレット番号
0x000C (1)Pixel Aspect Ratio ピクセルの縦横比。
この値(1〜255)をnとし、(n+15)/64 が実際の比率となる。
値0はこの比率情報が与えられていないことを意味する。
0x000D (-)Global Color Table 共通パレット。
Global Color Table Flagが1の場合に存在する。
1つの色情報につきRGBの3バイトずつ、2の(Size of Global Color Table)乗個並ぶ。


拡張画像ブロック [Graphic Control Extension]

アドレス (サイズ)名称内容
0x0000 (1)Signature 拡張ブロックであることを示す 0x21 固定値
0x0001 (1)Graphic Control Label このブロックがGraphic Control Extensionであることを示す 0xF9 固定値
0x0002 (1)Block Size ブロックサイズ。0x04 固定値
0x0003 (1)Packed Fields Reserved(3 Bits)
 予約領域 常に 0
Disposal Mothod(3 Bits)
 フレームの描画方法
 0 - 何もしない
 1 - 重ねる
 2 - 背景色で塗りつぶす
 3 - 前に戻す
User Input Flag(1 Bits)
 ユーザー入力の有無
Transparent Color Flag(1 Bits)
 透過処理の有無
0x0004 (2)Delay Time 表示する際の遅延時間(100分の1秒単位)
0x0006 (1)Transparent Color Index 透過処理する色のパレット番号
0x0007 (1)Block Terminator ブロック並びの終わりを示す。常に 0


画像ブロック [Image Block]

アドレス (サイズ)名称内容
0x0000 (1)Image Separator このブロックがImage Blockであることを示す。0x2C 固定値
0x0001 (2)Image Left Position GIF画像全体に対するこのイメージブロックの左端相対位置
0x0003 (2)Image Top Position GIF画像全体に対するこのイメージブロックの上端さ相対位置
0x0005 (2)Image Width このイメージブロックの横幅
0x0007 (2)Image Height このイメージブロックの縦幅
0x0009 (1)Packed Fields Local Color Table Flag(1 Bit)
 個別パレットの有無
Interlace Flag(1 Bit)
 インタレースの有無
Sort Flag(1 Bit)
 個別パレットのソートの有無
Reserved(2 Bits)
 予約領域 常に 0
Size of Local Color Table(3 Bits)
 この値(0〜7)に1を足した値をnとして、2のn乗が個別パレットの個数
0x000A (-)Local Color Table 個別パレット
Local Color Table Flagが1の場合に存在する。
1つの色情報につきRGBの3バイトずつ、2の(Size of Local Color Table)乗個並ぶ。
0x---- (1)LZW Minimum Code Side LZWコードの最小ビット数
0x---- (1)Block Size Image Dataのバイト数(1〜255)を表わす値
0x---- (-)Image Data Block Size分のイメージデータ
0x---- (1)Block Size Image Dataのバイト数(1〜255)を表わす値
0x---- (-)Image Data Block Size分のイメージデータ


0x---- (1)Block Terminator ブロック並びの終わりを示す。常に 0


参考資料

とほほのWWW入門
GIFフォーマットの詳細
Hey! Java Programming!
//GIF フォーマット//
GIF89a仕様書(英語)
spec-gif89a.txt

戻る