ライブラリは jsgif というのを使わせて頂きました。
手順はライブラリを読み込み、画像をひとコマ分ずつcanvasにロード、ライブラリに追加。終わったらバイナリからgifファイルを生成、という感じ。
もう少し詳しい解説は以下。
もう少し詳しい解説は以下。
LZWEncoder.jsNeuQuant.jsGIFEncoder.jsを読み込む- 適切なサイズの canvas を用意
GIFEncoderからエンコーダを作るvar encoder = new GIFEncoder();- アニメーションの時間間隔などを
encoderに設定encoder.setRepeat(0);
encoder.setDelay(100);
encoder.setSize(120, 120); - 一コマずつ書き始める
encoder.start();- canvas に絵を書く
canvas.drawImage(img); encoderに canvas のコンテキストを追加することで一コマを追加encoder.addFrame(ctx);
- canvas に絵を書く
- 書き込み終了
encoder.finish() encoderからバイナリを吐き出して、Blobを作るvar bin = new Uint8Array(encoder.stream().bin);
var blob = new Blob([bin.buffer], {type: ‘image/gif’});Blobから URL を作って表示 (revoke を忘れずに)var url = URL.createObjectURL(blob);
var image = new Image();
image.src = url;
image.onload = function() {
URL.revokeObjectURL(url);
};
デモはこの辺に。
こっそりじゃないけど Google+ で教えてもらいました。完全に僕の勘違いでした。お恥ずかしい・・・。
参考:
