GIF画像処理の概要の概要。

しらぎくモバイルシステムに搭載されているGIF画像の扱いについて解説します。

尚、GIF画像の詳細については、参考資料をご覧下さい。

「readGIF.pl」- GIF画像の読込スクリプト。

「readGIF.pl」はGIF画像を読込んでパレット列とピクセル列などの情報を与えます。

具体的な処理の流れは以下のようになります。

  1. 指定された画像ファイルを開いてバイナリデータを読込む。
  2. バイナリデータがGIF画像である事を確認する。
  3. サイズ・共通パレットなどのデータを取出す。
  4. イメージブロックから、(もしあれば)個別パレットなどのデータを取出す。
  5. 画像の圧縮データを取出す。
  6. 取出したデータをLZW展開でピクセル列に変換する。
  7. 必要な情報を返す。

尚、アニメGIFなど、複数の画像を内包したファイルの場合、一番初めに読出したイメージブロックのみが処理の対象となります。

従いまして、アニメGIFについては第一コマ目のみが処理の対象となります。

また、第一コマ目のイメージブロックを読出したら、その時点で処理を終了します。

従いまして、終了ブロックなど画像データの後に来るブロックは全て無視されます。

また、第一コマ目の画像に入る前にも幾つかの拡張ブロックを読出す可能性がありますが(特にアニメGIFの場合はネットスケープアプリケーション拡張ブロックを検出する筈です)、これらはフォーマットがしっかり定義されており、問題無く読飛ばしが出来ます。

パレットは原則的に共通パレットを採りますが、読込んだイメージブロックに個別パレットがあればそれで置換えます。

画像のサイズはイメージブロックでの値を採ります。

「putGIF.pl」- GIF画像の書出スクリプト。

「putGIF.pl」はパレット列やピクセル列などをもとにGIF画像を書出します。

現在のところ、アニメや透過機能を用いてはいないのですが、拡張性を考えて常に「89a」ヴァージョンとしております。

また、コントロールブロックは透過機能が無い限り書出される事はありません(実際には透過機能を利用しないようになっているので、意味はありませんが)。

画像データには当然LZW方式による圧縮を施します。

制約事項。

余り大きな画像データを処理させると、サーヴァに過剰な負荷を与える恐れがあるため、携帯電話で利用され得る大きさを超えていると思われる大きさのデータは門前払いにしております


ページ外へのご案内。