JavaScriptでgifAnimationの生成(GIFEncoder.js)
JavaScriptだけでGIFアニメーションを作成することのできるライブラリ「GIFEncoder.js」の利用方法を解説します。 本ライブラリはcanvas要素に描画された画像(コマ)をつなぎ合わせてGIFアニメーションとします。
必要ファイル
LZWEncoder.js
NeuQuant.js
GIFEncoder.js
※ここでダウンロードしたフォルダの中に全てあります。
1.インスタンスの生成
//インスタンスの生成 gifAnimation = new GIFEncoder(); //コマ毎の遅延時間(ミリ秒) gifAnimation.setDelay(0); //GIFアニメーションの生成開始 gifAnimation.start();
2.画像(コマ)の追加
//Canvas2D コンテキストの取得 var context = canvas.getContext("2d"); //コマの追加 gifAnimation.addFrame( context );
addFrameメソッド実行時点のcanvas要素に描画された画像が取り込まれます。
3.GIFアニメーションデータの生成
//GIFアニメーションの生成終了 gifAnimation.finish(); //バイナリデータの編集 var byteString = gifAnimation.stream().getData() ; var ab = new ArrayBuffer(byteString.length); var ia = new Uint8Array(ab); for (var i = 0; i < byteString.length; i++) { ia[i] = byteString.charCodeAt(i); } // Blobオブジェクトの生成 var blob = new Blob( [ab], {type: "image/gif" });
4.GIFアニメーションファイルのダウンロード
//a要素の生成 var a = document.createElement("a"); //BlobURLを取得しa要素のsrcへ与える a.href = window.URL.createObjectURL( blob ); //PNGファイル名の命名 a.download = "animation.gif"; a.innerHTML = "gifアニメーション"; //body要素にa要素を追加 document.getElementsByTagName( "body" )[0].appendChild(a);
GIFアニメーションの生成例
次のアニメーションはディープラーニングによる三角関数の学習の様子をGIFアニメーションで表現した結果です。 実際の実行ファイルはこちらです。