Programming language: Go
License: MIT License
Tags: Images    
Latest version: v0.3.0

smartcrop alternatives and similar packages

Based on the "Images" category.
Alternatively, view smartcrop alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of smartcrop or a related project?

Add another 'Images' Package



Build Status Coverage Status Go ReportCard GoDoc

smartcrop finds good image crops for arbitrary sizes. It is a pure Go implementation, based on Jonas Wagner's smartcrop.js

[Example](./examples/gopher.jpg) 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

[Example](./examples/goodtimes.jpg) Image: https://www.flickr.com/photos/endogamia/5682480447 by Leon F. Cabeiro (N. Feans), licensed under CC-BY-2.0


Make sure you have a working Go environment (Go 1.9 or higher is required). See the install instructions.

To install smartcrop, simply run:

go get github.com/muesli/smartcrop

To compile it from source:

cd $GOPATH/src/github.com/muesli/smartcrop
go get -u -v
go build && go test -v


package main

import (
    _ "image/png"


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

cd $GOPATH/src/github.com/muesli/smartcrop
go install ./cmd/smartcrop

Usage of smartcrop:
  -height int
        crop height
  -input string
        input filename
  -output string
        output filename
  -quality int
        jpeg quality (default 85)
        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.


Join us on IRC: irc.freenode.net/#smartcrop

*Note that all licence references and agreements mentioned in the smartcrop README section above are relevant to that project's source code only.