Skip to content

Instantly share code, notes, and snippets.

@KustoSan
Last active September 6, 2015 02:50
Show Gist options
  • Save KustoSan/481b2d012e30376159a4 to your computer and use it in GitHub Desktop.
Save KustoSan/481b2d012e30376159a4 to your computer and use it in GitHub Desktop.
var b = "https://rawgit.com/antimatter15/jsgif/master/";
var u = [
"LZWEncoder.js", "NeuQuant.js", "GIFEncoder.js", "Demos/b64.js"
];
$("canvas").remove();
var $c = $("<canvas>").appendTo("body");
var ctx = $c[0].getContext("2d");
var d = document;
var i = 0;
u.forEach(function(r){
var s = d.createElement("script");
s.src = b + r;
s.onload = function(){
if(++i == u.length){
load();
}
};
d.body.appendChild(s);
});
function load(){
var e = new GIFEncoder();
e.setRepeat(0);
e.setDelay(pixiv.context.ugokuIllustData.frames[1].delay);
e.start();
if (pixiv.context.ugokuIllustFullscreenData.size) {
var d = pixiv.context.ugokuIllustFullscreenData;
}
else {
var d = pixiv.context.ugokuIllustData;
};
var w = d.size[0];
var h = d.size[1];
$c.attr({
width: w,
height: h
});
var z = new ZipImagePlayer({
canvas: $c[0],
source: d.src,
metadata: d,
chunkSize: 3e5,
loop: 1,
autoStart: false
});
$(z).on("loadingStateChanged", function(a, c){
if(c === 2){
var imgs = z._frameImages;
(function f(i){
if(i == imgs.length){
e.finish();
var bin = e.stream().getData();
var url = 'data:image/gif;base64,'+encode64(bin);
console.log(url);
$(".player").append('<img src="' + url + '">');
$("canvas").remove();
document.title = 'GIF Ready!';
return;
}
var img = imgs[i];
ctx.drawImage(img, 0, 0, w, h);
e.addFrame(ctx);
return f(++i);
})(0);
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment