WARNING: This is a work in progress. Neither the API nor the algorithm are finished. (Automated) verification, testing and benchmarking are yet to be done.
Smartcrop.js implements an algorithm to find good crops for images.
Image: https://www.flickr.com/photos/endogamia/5682480447/ by N. Feans
It does this using fairly dumb image processing. In short:
- Find edges using laplace
- Find regions with a color like skin
- Find regions high in saturation
- Generate a set of candidate crops
- Rank them using a importance function to focus the detail in the center and avoid it in the edges.
- Output the candidate crop with the highest rank
- Test Suite containing over 100 images, heavy
- Test Bed allows you to upload your own images
var result = SmartCrop.crop(image, {width: 100, height: 100}, function(result){console.log(result);});
// {topCrop: {x: 300, y: 200, height: 200, width: 200}}
The smartcrop-cli offers command line interface to smartcrop.js. It is based on node.js and node-canvas. You can also view it as an example on how to use smartcrop.js from a node.js app.
Smartcrop.js can be used as plain javascript in the browser, amd or commonjs module. It can be in a node environment using node-canvas. There are no dependencies.
The API is not yet finalized. Look at the code and expect changes.