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}}
npm install smartcrop
or
bower install smartcrop
or just download smartcrop.js from the git repo.
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.
Supported:
- common js
- amd
- global export / window
The API is not yet finalized. Look at the code and expect changes.
Copyright (c) 2014 Jonas Wanger, licensed under the MIT License (enclosed)