Resize image while downloading and create image directory

This commit is contained in:
Grégoire Delattre 2016-11-23 21:03:10 +01:00
parent 0a4d09d7c5
commit 77da13200e

View File

@ -1,19 +1,33 @@
package web package web
import ( import (
"image"
"image/jpeg"
"io" "io"
"net/http" "net/http"
"os" "os"
"path"
"github.com/nfnt/resize"
) )
// Download used for downloading file // Download used for downloading file
var Download = func(srcURL, dest string) error { var Download = func(srcURL, dest string) error {
if err := createDirectory(dest); err != nil {
return err
}
resp, err := http.Get(srcURL) resp, err := http.Get(srcURL)
if err != nil { if err != nil {
return err return err
} }
defer resp.Body.Close() defer resp.Body.Close()
img, err := resizeImage(resp.Body)
if err != nil {
return err
}
// Create the file // Create the file
file, err := os.Create(dest) file, err := os.Create(dest)
if err != nil { if err != nil {
@ -21,10 +35,19 @@ var Download = func(srcURL, dest string) error {
} }
defer file.Close() defer file.Close()
// Write from the net to the file return jpeg.Encode(file, img, nil)
_, err = io.Copy(file, resp.Body) }
if err != nil {
return err // createDirectory creates the destination directory
} func createDirectory(dest string) error {
return nil return os.MkdirAll(path.Dir(dest), os.ModePerm)
}
func resizeImage(img io.Reader) (image.Image, error) {
image, _, err := image.Decode(img)
if err != nil {
return nil, err
}
return resize.Resize(300, 0, image, resize.Lanczos3), nil
} }