ここでは、しらぎくGIF画像合成スクリプトの実際の動作について解説します。
しらぎくGIF画像合成スクリプトでは、具体的に以下のようにして処理して行きます。
ここで注意したいのは、一連の処理において、GIF画像データの解凍や再圧縮を一切行っていないと言う事です。
代りにアニメーションGIFの原理を用いて一画像データに複数画像のデータを封入して一気に纏めて表示させる事で画像を合成していると言う訳です。
以下、各処理について具体的に解説しておきます。
具体的には以下のデータのみが必要となります。
これは個別データのサイズとなります。
但し、ベースとなる画像に関しては、共通データのサイズとします。
尚、貼り付けるGIF画像がベース画像をはみ出してしまう場合、ベース画像の大きさはその都度拡げられます。
個別データにある表示位置です。
これを取得しておかないと、正常な表示が出来ません。
個別データ内にフラグがあるので、それを取得しておきます。
特に貼り付けるGIF画像の透過属性を切り捨ててしまうと見っともない仕上がりになってしまいます。
個別データの前にあるコントロールブロックから取得します。
LZW圧縮されたデータですが、このスクリプトでは展開処理などは一切行いません。
画像データのブロックをそのまま取得します。
尚、アニメーションGIFを読み込んだ場合は、第一コマのみをデータとして取得し、アニメーション関連の属性はすべて破棄されます。
抽出したデータは、ベース画像から順番に新たなGIFデータとして連結されて行きます。
具体的には以下のようになります。
アニメーションGIFを実現するため、GIF89a規格に準拠します。
以下のようになります。
まずコントロールブロックで透過属性と遅延時間を指定します。
このあとに個別パレットデータを付けた画像情報ブロックを続けます。
全ての画像データを連結した後に付けます。
MNG動画が普及していれば、上記とほぼ同様の発想でJPEG/PNG画像専用の合成スクリプトが作れるのですが、あいにくMNG動画は全く普及していないので、作る予定はございません。