package media import ( "image" "image/jpeg" "os" "path" "github.com/nfnt/resize" ) func imageSize(name string) (image.Rectangle, error) { f, err := os.Open(name) if err != nil { return image.ZR, err } defer f.Close() cfg, _, err := image.DecodeConfig(f) if err != nil { return image.ZR, err } width := cfg.Width height := cfg.Height return image.Rect(0, 0, width, height), nil } func ThumbImage(filename string, img image.Image, size image.Rectangle) error { os.MkdirAll(path.Dir(filename), 0755) fthumb, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0655) if err != nil { return err } img = resize.Resize(uint(size.Dx()), uint(size.Dy()), img, resize.Bilinear) err = jpeg.Encode(fthumb, img, nil) if err != nil { return err } err = fthumb.Close() if err != nil { return err } return nil }