読者の皆様へ:
このページでは、テクニカルな見地からGIF89aのフォーマットとGIF89aのアニメーションの仕組みを説明しています。GIFアニメーションの作り方についてはチュートリアルのページを順にご覧ください。このページは、GIF89aのフォーマットや動作の仕組みについてのテクニカルなメリットを理解したい方向けのページになっています。ページの最後にはCompusurveが策定したGIF87aとGIF89aの各フォーマットのオリジナルの規格書がリンクされています。
原文はこちらです。また、山浦さんがまとめれられた“GIFについて”もご覧ください。
規格書を翻訳された方からメールをいただいたのですが、そのメールを紛失してしまいました。で、やっとそのページを発見しました。これらの規格書の翻訳がここにあります。LZWや詳細なフォーマットについての記述があります。
このページの内容:
GIF89aを理解する
まず、多くの人たちにとって訳の分からない言葉(しかし、意味があり、知っている人には通じる言葉)が本文中にあることを御了承ください。
GIFの画像フォーマットにはLZW圧縮アルゴリズムが組み込まれています。この圧縮アルゴリズムは特許権のある技術で、現在はUNISYS Corporationに所有されています。1995年から、UNISYSはGIF LZW圧縮を使用する製品を扱うコマーシャルベンダに対して、UNISYSからライセンスを受けなければならないようにしました。エンドユーザやオンラインサービス、非営利組織はその特許権使用料を支払う必要はありません。これがきっかけとなり、GIFは特許権使用料が無料のフォーマットになっています。1995年からのみ、UNISYSは特許権使用料を徴集することを決定しています。この特許権使用料の支払いをしないで済ませるために、ベンダは背景の透過やインターレースをサポートしたGIFに代わるPNG(pingと読む。Portable Network Graphicの略)を開発しました。しかしながら、PNGは複数の画像データのストリーミングを(原文著者の記憶によると)サポートしていません。
ではここで、いったん整理しましょう。すべてを確認するためにGIF87aの規格書をみつけなくてはなりませんが、これは私が理解するための方法なのです。(“だから、必要だと考える方だけGIF87aの規格書を読んでください”という意味だと思います) GIF87aは、御推察のとおり、1987年にリリースされました。GIF87aには下に示す特徴が含まれています:
- 画像がLZW圧縮されている
- 複数の画像が1つのファイルにエンコードされている
- ロジカルなスクリーン領域でのポジショニング(要確認)
- インターレーシング(要確認)
これは、今から12年前に、1つのファイルに複数の画像をエンコードし、フレームとして参照することでシンプルなアニメーションがGIFで実現が可能であったことを意味します。GIF89aはGIF87aの規格を拡張したものです。GIF89aでは以下が追加されました:
- 次のフレームを表示するまでの100分の1秒単位での待ち時間の指定
- ユーザ側からのインプットを待つ
- 透過させる色を特定する
- 画面には表示されないコメントを含む
- 複数行のテキストを表示する
- フレームが表示された後(次のフレームが表示される前)、どのように消去されるかを指定する
- ファイルの中にアプリケーション固有の拡張をエンコードする
Netscape Navigatorは、すべてのGIF89aの機能をサポートしようとしている唯一のブラウザです。Netscape Navigatorでは複数行のテキストやユーザインプットを現時点ではサポートしていません(現時点ではユーザインプットの一部がサポートされているようです)。そして、直前の画像によるその後の画像の消去の仕方もサポートされていません(これは現時点ではサポートされているようです)。ほとんどのブラウザでは、GIF87aの単一の画像はサポートされ透過フラグがたったGIF89aを認識することができます。透過GIFはすべてGIF89aフォーマットなのです。GIF87aがアニメーションをサポートできるので、GIF89aアニメーションと呼ぶことに戸惑いを感じいる方がいると思います。技術的に適切なネーミングは便宜的に“いくつかのブラウザは技術的にGIF87aアニメーションと透過の点だけで部分的にGIF89aをサポートしているが、Netscape Navigatorやその他のブラウザでは、GIF89aの機能のいくつかまたはすべてによりアドバンテージを得たほとんどGIF89aに従っているアニメーション”と考えます(原文著者もよく考えたな〜、私もよく訳したな〜)。したがってGIFのアニメーションをGIF89aアニメーションと今後も呼び続けることにしました(でも日本ではGIFアニメーションていいますよね)。
GIF89aは最大256色のフォーマットです。GIFは2〜256色までの間のいかなる色数に対応できます。より少ない色数、より少ないデータ、より小さい画像ファイルを実現します。GIFが4色しか使用していない場合は、パレットを2ビット(4色)に減らしてファイルサイズを75%以上まで減らすことができます。
現在、市販されているほとんどすべてのソフトウェアでGIFフォーマットを扱うことができます。しかし、それらのすべてがGIFアニメーションを扱えるとは限りません。GIFアニメーションを扱えるソフトウェアについては、ホームページに戻りソフトウェア関連のページを見てください。
ページのトップへ
GIF89aのファイル構造
(山浦さんがまとめられた“GIFについて”と重複する部分ですので後日翻訳いたします)
ページのトップへ
GIF89aのアニメーションのメリットと制限事項
メリット
- GIFに共通のメリット:背景などを透過できます。画像が圧縮されます。インターレースが利用できます。2/4/8/16/32/64/128/256の各色数のカラーパレットで最適化し画像を圧縮してファイルサイズを小さくできます。
- Netscape Navigator 2.0以降でサポートされています。プラグインや追加するソフトは必要ありません。Mac OS、UNIX、SUN OS、Solaris、Linux、Irix、Windows 3.1x、Windows 95やWindows NTなどで動作します。(その他のOSでも動作すると思います)
- WebデザイナーはプロバイダのWebサーバやSSI、Perlスクリプトなどを利用したCGIなどを使う必要がありません。複数の画像ファイルをGIF89aにするアプリケーションでGIFアニメーションを作ることができます。
- アニメーションをくり返し表示させたり、再利用することができます。同一の画像を1つのページで複数回表示させるように配置できます。1度ファイルをダウンロードするとブラウザのキャッシュから参照されて、複数配置したりアニメーションをループさせることができます。(ループの度にサーバからダウンロードする必要はありません)
- GIFアニメーションのファイルを1度ダウンロードすれば、モデムでインターネットに繋ぎ続ける必要はありません。GIFアニメーションはサーバに依存してアニメーションを再生する方法よりも速くアニメーションを再生できます。
- GIFアニメーションのファイルは驚くほどに小さいです。このページの下の方にあるホームページに戻るボタンになっているGIFアニメーションの画像はわずか4595バイト(約4K強)しかありません。
- だれもが自分のWebページでGIFアニメーションを使うことができます。GIFアニメーションのファイルがあれば、Webページに簡単にGIFアニメーションを張り込むことができます。使い方については、いろいろなWebページを参照しててください。
- 他のGIFと同じように動作します。IMGタグやアンカーのAタグで使用できます。
制限事項
- GIFに共通の制限事項:最大で256色しか表示できず、写真の保存にはJPEGの方が圧縮方法の点で適しています 。
- Netscape Navigator 2.0以降からしか動作しません。しかし、MacintoshやUNIX、Windowsなどのどのプラットフォームでも動作します 。
- GIFアニメーションは1回だけまたは連続して動作します。ページのリフレッシュだけではGIFアニメーション画像は再び動作しません。しかし、リロード(再読み込み)とブラウザウィンドウのリサイズを行なうとGIFアニメーション画像は再び動作します。GIFアニメーションの画像ファイルがブラウザにキャッシュされていれば、バックする(戻る)と再び動作します。Netscape Navigatorのその後のバージョンではこのような不都合が解消されているかもしれません。
- backgruoudタグで背景の画像を指定する場合はGIFアニメーションとしては利用できません。その場合は、GIFアニメーションの最初のフレームの画像が表示されます。
- Netscape NavigatorはGIF89aのすべての機能をサポートしていません。
- ユーザ側からのインプットが無視されます(現時点では一部サポートされているようです)。
- 直前の画像の画像消去の制御をハンドルできません(現時点ではサポートされているようです)。
- プレインテキストが表示されません。
- Windowsでは、3分の1秒よりも短い間隔の画像のコマ送りができないというバグがあります。
- ブラウザが他の画像をダウンロードしている最中や他のGIFアニメーションが動作している場合には、GIFアニメーションが遅く表示されたり中断されていしまう場合があります。
- GIFと同様に簡単に“借用”されやすいです。(無断で・・・)
- GIFアニメーションをサポートしていないブラウザがあります。そのようなブラウザではGIFアニメーションの最初のフレームか最後のフレームの画像だけが表示されます。
ページのトップへ
GIF89aの規格書
Compuserveは1989年の7月にGIF89aの技術規格書を策定しました。(Compuserveとはアメリカ合衆国にあるパソコン通信の会社です。Compuserveは1997年にAOLに買収されました。念のため書いときます。)この技術規格書は、GIF89aのフォーマットの構造とルールが細かく記述されています。
このページに記述されていることよりさらに詳しく知りたい方は、Compuserveが策定したGIF89aの規格書(英語原文)をご覧ください。GIFに関係するプログラムを作成する際に利用できる完全な規格書となっています。また、GIF87aの規格書(英語原文)もご覧いただけます。
(これらの規格書の翻訳があります。)
ページのトップへ
|