Skip to content

Instantly share code, notes, and snippets.

@mrdoob
Created August 30, 2011 18:29
Show Gist options
  • Save mrdoob/1181629 to your computer and use it in GitHub Desktop.
Save mrdoob/1181629 to your computer and use it in GitHub Desktop.
node.js canvas recorder
// CLIENT (PER FRAME)
var formData = new FormData();
formData.append( 'filename', 'frame' + ( count ++ ) + '.png' );
formData.append( 'data', canvas.toDataURL( 'image/png' ) );
var xhr = new XMLHttpRequest();
xhr.open( 'POST', 'http://127.0.0.1:1337/' );
xhr.send( formData );
// SERVER
var http = require( 'http' );
var fs = require( 'fs' );
http.createServer( function ( request, response ) {
var body = '';
request.addListener( 'data', function ( data ) {
body += data;
} );
request.addListener( 'end', function () {
var parts = body.split( '------' );
var POST = {};
for ( var i = 1, l = parts.length - 1; i < l; i ++ ) {
var param = parts[ i ].split( '\r\n\r\n' )[ 0 ].split( 'name=' )[ 1 ].split( '"' )[ 1 ];
var content = parts[ i ].split( '\r\n\r\n' )[ 1 ].trim();
POST[ param ] = content;
}
var buffer = new Buffer( POST[ 'data' ].substr( POST[ 'data' ].indexOf(',') + 1 ), 'base64' );
fs.writeFile( 'images/' + POST[ 'filename' ], buffer.toString( 'binary' ), 'binary' );
} );
response.writeHead( 200, {
'Content-Type': 'text/plain',
'Access-Control-Allow-Origin': '*'
} );
response.end();
}).listen( 1337 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment