Skip to content

Instantly share code, notes, and snippets.

@fredludlow
Created March 14, 2017 15:47
Show Gist options
  • Save fredludlow/a384a15965c70510cddfd21cccda96ba to your computer and use it in GitHub Desktop.
Save fredludlow/a384a15965c70510cddfd21cccda96ba to your computer and use it in GitHub Desktop.
Create a thumbnail from an NGL stage instance
function getThumbnail(stage) {
var canvas, context, image = new Image();
function setupCanvas() {
canvas = document.createElement( 'canvas' );
canvas.style.visibility = "hidden";
canvas.width = 100;
canvas.height = 100;
document.body.append( canvas );
context = canvas.getContext('2d');
}
function removeCanvas() {
canvas.remove();
}
var imgPromise = stage.makeImage( {
trim: true,
antialias: true,
transparent: false });
var fileDataPromise = imgPromise.then( function( blob ){
var debug = blob;
return new Promise( function( resolve, reject ){
var fr = new FileReader();
fr.onload = function() {
resolve( this.result );
}
fr.readAsDataURL( blob );
});
});
var resultPromise = fileDataPromise.then( function( data ){
var dbg = data;
setupCanvas();
return new Promise( function( resolve, reject ){
image.onload = function( ) {
context.clearRect(0, 0, 100, 100);
context.drawImage( this, 0, 0, this.width, this.height, 0, 0, 100, 100 );
resolve( canvas.toDataURL() );
}
image.src = data;
});
});
resultPromise.then( removeCanvas );
return resultPromise;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment