|
- 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
- }
|