Awesome Open Source
Awesome Open Source



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


You'll need to install sharp alongside smartcrop-sharp.

npm install --save smartcrop-sharp sharp


crop(image, options)

Image: string (path to file) or buffer

Options: options object to be passed to smartcrop

returns: A promise for a cropResult


const sharp = require('sharp');
const smartcrop = require('smartcrop-sharp');

// finds the best crop of src and writes the cropped and resized image to dest.
function applySmartCrop(src, dest, width, height) {
  return smartcrop.crop(src, { width: width, height: height })
    .then(function(result) {
      const crop = result.topCrop;
      return sharp(src)
        .extract({ width: crop.width, height: crop.height, left: crop.x, top: crop.y })
        .resize(width, height)

applySmartCrop('flower.jpg', 'flower-square.jpg', 128, 128);

Face Detection Example

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



  • Update peerDependency to sharp 0.30


  • Update peerDependency to sharp 0.29


  • Updated all dependencies
  • Added typescript definitions (with help from @nicholaschiang)


  • sharp is now a peer dependency you will need to install it via npm install sharp when updating
  • In short: It's a lot faster, especially when calculating bigger crops.
  • The quality of the crops should be comparable but the exact results are going to be different.
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Javascript (1,060,850
Face (12,071
Crop (3,813
Libvips (188
Smartcrop (37