GIF ファイルとは何ですか?
GIF または Graphical Interchange Format は、高度に圧縮されたイメージの一種です。 Unisys が所有する GIF は、画質を劣化させない LZW 圧縮アルゴリズムを使用します。各画像の GIF では通常、1 ピクセルあたり最大 8 ビットが許可され、画像全体で最大 256 色が許可されます。 JPEG 画像とは対照的に、最大 1600 万色を表示でき、人間の目の限界にかなり触れます。インターネットが登場した当時、GIF は依然として最良の選択でした。なぜなら、GIF は低帯域幅を必要とし、単色の領域を消費するグラフィックスとの互換性が必要だったからです。アニメーション GIF は、多数の画像またはフレームを 1 つのファイルに結合し、それらを順番に表示して、アニメーション クリップまたは短いビデオを生成します。色の制限はフレームごとに最大 256 であり、色のグラデーションを使用して他の画像や写真を再現するのには最も適していない可能性があります。
GIF ファイル形式
概念的には、GIF ファイルには、0 個以上の画像で埋め尽くされた固定サイズのグラフィック領域があります。一部の GIF ファイルは、固定サイズのグラフィック領域またはブロックを、アニメーション GIF の場合にアニメーション フレームとして機能できるサブイメージに分割します。 GIF 形式は、1 ~ 8 ビットのピクセル深度を使用してビットマップ データを格納します。イメージの保存には、常に RGB カラー モデルとパレット データが使用されます。バージョンに応じて、固定長のヘッダー (「GIF87a」または「GIF89a」) が一般的な GIF ファイルの開始を定義します。
現在、GIF の 2 つのバージョン: 87a と 89a が利用可能です。前者は元の GIF 形式で、後者は新しい GIF 形式です。このファイル形式では、ブロックの特性とピクセル寸法が固定長の論理画面記述子で記述されます。グローバル カラー テーブルの存在とサイズは、スクリーン ディスクリプタで指定できます。スクリーン ディスクリプタは、存在する場合はさらに詳細を追跡します。トレーラーは、ASCII セミコロンの 1 バイトを保持するファイルの最後のバイトです。一般的な GIF87a ファイルのレイアウトは次のとおりです。
ヘッダー
ヘッダーは 6 バイトを保持し、ファイルの種類を GIF として指定するために使用されます。論理画面記述子は実際のヘッダーから分離されていますが、2 番目のヘッダーと見なされる場合があります。ヘッダーを格納するために使用される同じ構造が、論理画面記述子を格納する場合があります。すべての GIF ファイルは 3 バイトの署名で始まり、文字「GIF」を識別子として使用します。バージョンもサイズが 3 バイトで、GIF ファイルのバージョンを宣言します。
論理画面記述子
固定長の画像記述子は、GIF 画像の作成に必要な画面と色の情報を指定します。高さと幅のフィールドは、画像データを表示するために必須の画面解像度の最小値を囲みます。表示デバイスが指定された解像度を表示できない場合は、画像を適切に表示するためにスケーリングが必要になります。画面およびカラー マップ情報は、以下の表の 4 つのサブフィールドによって表示されます (ビット 0 は最下位ビットです)。
ビット | サブフィールド |
---|---|
0-2 | グローバル カラー テーブルのサイズ |
3 | カラー テーブル ソート フラグ |
4-6 | 色の解像度 |
7 | グローバル カラー テーブル フラグ |
グローバル カラー テーブル
オプションのグローバル カラー テーブルは、論理画面記述子の直後に配置されます。このテーブルは、イメージ データ内のピクセル カラー データにインデックスを付けるためにマップされます。グローバル カラー テーブルがない場合、GIF ファイル内の各画像はローカル カラーを使用します。グローバル カラー テーブルとローカル カラー テーブルの両方が欠落している場合は、デフォルトのカラー テーブルを指定することをお勧めします。一連の 3 バイトのトリプルが、カラー テーブルの要素を構成します。各バイトは、RGB カラー値を特徴付けます。赤、緑、青の色は、各カラー テーブル要素の値として使用されます。グローバル カラー テーブルのエントリは最大 256 エントリに達し、常に 2 のべき乗で表されます。
画像データ
画像データには、エンコードされていないシンボルのバイトが格納され、その後に LZW でエンコードされたデータと共にサブのリンクされたリストが続きます。
予告編
Trailer は、ファイルの最後の文字である 1 バイトのデータを表します。このバイトの値は永続的に 3Bh であり、データ ストリームの終了を指定します。すべての GIF ファイルには、各ファイルの最後にトレーラーが必要です。
参照
※【GIFファイル形式】(https://en.wikipedia.org/wiki/GIF)