GIFサイズ減少の座学

 ここを読む前に、必ず「GIFの圧縮について」をお読みください。また、 ここは、テクニック的なものではなく座学的な物だとご理解ください。そして、減らしたデータは、二度と元に戻らないことを忘れないでください。

基礎知識、ざっと流しましょう

 GIFという形式がどういうものかざっと説明します。 別にプログラム講座ではないので詳細には触れませんのでご安心ください。

 さて、GIFをアルバムのようなものと考えてください。中に何枚もの写真を閉じることが出来、写真(画像)ごとに日付などの情報がかかれています。これと同じようなことを行っているのがGIFという形式です。
 JPGは複数枚には対応しておらず、このたとえなら額のようなものです。

 さて、画像ごとの情報には、表示時間数(0.01秒が1単位)、どの様に表示するか、どんな色を使っているか…といった設定が可能です。

 はい基礎知識はこれで終わりです。これから深みにはまっていきましょう(謎

GIFの色の保管に関して

 さて、色情報はパレットと呼ばれるもので管理されています。さて、何故パレットというものがあるかというと、色は3原色の合成で表されます。ここが曲者なのです

 GIFは1677万色(24bitカラーとも言います)中256色を利用でき、 1色を現すのに3バイト必要とします。これを、パレットを使わずに無圧縮で保管(BMPともいふ)すると、
320×240の画像では
320×240×3=230400バイトの容量が必要になります。

 そこでパレットを利用します。色だけを集めたパレットを用意し、絵の色が1なら1のパレット、34なら34のパレットを参照するようにすると、画像中の1色を現すのに1バイトで済みます
GIFは透明色込みで256色使えるので、パレットのサイズ=3×256=768バイト
画像サイズ320×240=76800バイト
総サイズは、これらを合わせて、77568バイトと、式のまんまですが約3分の1になりました。

 これがパレットの威力です。そしてGIFはグローバルパレットと、ローカルパレットの2種類のパレットを利用出来ます。そしてローカルパレットは使わないことも出来ます。

 先ほどの例でたとえると、アルバムの表紙には絵があり、そこにも情報が書かれており、表紙のパレットがグローバルパレット、写真ごとのパレットがローカルパレットです。

グローバルパレットとローカルパレット

では、サイズ削減にどのようにパレットが影響するかを書きます。次の絵を呉蘭ください。

この2枚は、左がローカルパレットを利用したもの、右がグローバルパレットのみの物です。
色数は左が綺麗に表現されていますが、サイズは右のほうが小さいくなっています。(左はnatmですが、右は後述の事情がありFireworksです)

 では、グローバル・ローカル両パレットがどれだけサイズを必要とするか考えてみましょう。
今回は参考のためにコマ数を多めに考え255色の40コマで計算します。
まず基本として、256色の場合は、先ほど計算したように1パレットが768バイトです。

 グローバルパレットは必ずあるので、40コマの場合、1グローバルパレットに40ローカルパレットの41パレット…つまり768×41=31488 と約32K必要になります。

 これがグローバルパレットだけの場合、768バイトだけで済みます。これは馬鹿に出来ない大きさです。しかし、全てのコマを256色だけで表現する為、色の最限度は格段に低下します。
先の画像だと7コマありますが、ローカルパレットの場合255色のグラデーションも可能ですが、グローバルパレットのみとなると、1コマに32色ぐらいしか利用できません。
 逆にnatmであればグローバルパレット(大体は最初に読み込んだのと同じパレット)を削除すれば768バイト削れますw
副次的な効果として、パレットの統合をすることで減色され結果圧縮率も向上します。

 後で気付きましたが、本項に関してはnatmの説明書にも記載されていました。

  natmであれば、編集⇒パレットの統合 でこの作業が行えます。ただ、黒のグラデには不向きなようなので、先ほどの左の例だと、1コマ目の黒にゴミが入ります。この場合は1コマ目以外を選択し統一を行えば良好な結果が得られるようです。その上で1コマ目のローカルパレットも減色を行えばサイズが減るのでウハウハです(謎)、この関係で先ほどの例はFirewoksで行われています。

リサイズ

 大きさを変えることです、面積は2乗に比例するので、大きくいじらなくてもサイズは小さくなります。そのかわり圧縮率が悪くなるので、ケースバイケースな所があり、リトライしてみるしかないのも事実。その際には必ず元を残してくださいね、小さくした画像は大きくしても元には戻らないのが掟ですから(謎

戻る