smartcrop
Finds good crops for arbitrary images and crop sizes
About smartcrop
smartcrop
smartcrop finds good image crops for arbitrary sizes. It is a pure Go implementation, based on Jonas Wagner's smartcrop.js
Image: https://www.flickr.com/photos/usfwspacific/8182486789 by Washington Dept of Fish and Wildlife, originally licensed under CC-BY-2.0 when the image was imported back in September 2014
Image: https://www.flickr.com/photos/endogamia/5682480447 by Leon F. Cabeiro (N. Feans), licensed under CC-BY-2.0
Installation
Make sure you have a working Go environment (Go 1.12 or higher is required). See the install instructions.
To install smartcrop, simply run:
go get github.com/muesli/smartcrop
To compile it from source:
git clone https://github.com/muesli/smartcrop.git
cd smartcrop
go build
Example
package main
import (
"fmt"
"image"
_ "image/png"
"os"
"github.com/muesli/smartcrop"
"github.com/muesli/smartcrop/nfnt"
)
func main() {
f, _ := os.Open("image.png")
img, _, _ := image.Decode(f)
analyzer := smartcrop.NewAnalyzer(nfnt.NewDefaultResizer())
topCrop, _ := analyzer.FindBestCrop(img, 250, 250)
// The crop will have the requested aspect ratio, but you need to copy/scale it yourself
fmt.Printf("Top crop: %+v\n", topCrop)
type SubImager interface {
SubImage(r image.Rectangle) image.Image
}
croppedimg := img.(SubImager).SubImage(topCrop)
// ...
}
Also see the test cases in smartcrop_test.go and cli application in cmd/smartcrop/ for further working examples.
Simple CLI application
go install github.com/muesli/smartcrop/cmd/smartcrop
Usage of smartcrop:
-height int
crop height
-input string
input filename
-output string
output filename
-quality int
jpeg quality (default 85)
-resize
resize after cropping (default true)
-width int
crop width
Example: smartcrop -input examples/gopher.jpg -output gopher_cropped.jpg -width 300 -height 150
Sample Data
You can find a bunch of test images for the algorithm here.
Feedback
Got some feedback or suggestions? Please open an issue or drop me a note!
Frequently Asked Questions
What is smartcrop?
smartcrop is a Images library for the Go programming language. Finds good crops for arbitrary images and crop sizes
How many GitHub stars does smartcrop have?
smartcrop has 1,858 GitHub stars in the directory's latest synchronization.
How do I install smartcrop?
Install smartcrop with the Go module system using `go get muesli/smartcrop`. Check the repository for the current installation instructions.
What category does smartcrop belong to?
smartcrop is listed under Images, specifically Images.