Skip to content

Instantly share code, notes, and snippets.

Forked from arian/crop.js
Created Feb 7, 2014
What would you like to do?
var spawn = require('child_process').spawn;
var Stream = require('stream');
* crops and resizes images to our desired size
* @param {Stream} streamIn in stream containing the raw image
* @return {Stream}
exports.cropImage = function(streamIn){
var command = 'convert';
var args = [
"-", // use stdin
"-resize", "640x", // resize width to 640
"-resize", "x360<", // resize height if it's smaller than 360
"-gravity", "center", // sets the offset to the center
"-crop", "640x360+0+0", // crop
"+repage", // reset the virtual canvas meta-data from the images.
"-" // output to stdout
var proc = spawn(command, args);
var stream = new Stream();
proc.stderr.on('data', stream.emit.bind(stream, 'error'));
proc.stdout.on('data', stream.emit.bind(stream, 'data'));
proc.stdout.on('end', stream.emit.bind(stream, 'end'));
proc.on('error', stream.emit.bind(stream, 'error'));
return stream;
// usage
var fs = require('fs');
var streamIn = fs.createReadStream('./image.jpg');
var streamOut = fs.createWriteStream('./resized.jpg');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment