package main import ( "log" "image/gif" "image" "os" "github.com/nfnt/resize" "github.com/oliamb/cutter" ) func main() { if err := run(); err != nil { log.Fatal(err) } } func run() error { src, err := os.Open("sample.gif") if err != nil { return err } defer src.Close() img, _, err := image.Decode(src) if err != nil { return err } thumbnail := resize.Resize(111, 100, img, resize.Lanczos3) cropped, err := cutter.Crop(thumbnail, cutter.Config{ Width: 100, Height: 100, Mode: cutter.Centered, }) if err != nil { return err } dest, err := os.Create("output.gif") if err != nil { return err } defer dest.Close() if err := gif.Encode(dest, cropped, nil); err != nil { return err } return nil }