Node module for using smartcrop via image magick
JavaScript VimL
Latest commit b3decc2 Sep 16, 2016 @jwagner Update smartcrop version
Permalink
Failed to load latest commit information.
test Fixing tests Jun 25, 2016
.editorconfig init Jun 19, 2016
.gitignore init Jun 19, 2016
.jscsrc init Jun 19, 2016
.jshintrc init Jun 19, 2016
.npmignore init Jun 19, 2016
.travis.yml travis experiment Jun 25, 2016
.vimrc init Jun 19, 2016
README.md Update README.md Aug 21, 2016
index.js README Jun 19, 2016
package.json Update smartcrop version Sep 16, 2016

README.md

smartcrop-gm

Build Status

This is an adapter module for using smartcrop.js with node.js using gm for image decoding.

It requires image magick to be installed and available in $PATH to function.

Installation

npm install --save smartcrop-gm

API

crop(image, options)

Image: string (path to file) or buffer

Options: options object to be passed to smartcrop

returns: A promise for a cropResult

Example

var request = require('request');
var gm = require('gm').subClass({imageMagick: true});
var smartcrop = require('smartcrop-gm');

function applySmartCrop(src, dest, width, height) {
  request(src, {encoding: null}, function process(error, response, body){
    if (error) return console.error(error);
    smartcrop.crop(body, {width: width, height: height}).then(function(result) {
      var crop = result.topCrop;
      gm(body)
        .crop(crop.width, crop.height, crop.x, crop.y)
        .resize(width, height)
        .write(dest, function(error){
            if (error) return console.error(error);
        });
    });
  });
}

var src = 'https://raw.githubusercontent.com/jwagner/smartcrop-gm/master/test/flower.jpg';
applySmartCrop(src, 'flower-square.jpg', 128, 128);

Face Detection

Check out smartcrop-cli for a more advanced example of how to use smartcrop from node including face detection with opencv.

Security Considerations

smartcrop-gm is using imagemagick for decoding and resampling images. A number of security issues have been found in imagemagick recently. Make sure that you take the appropriate steps to protect your infrastructure.