WebP resize support

This commit is contained in:
Vitaly Baev 2017-03-31 09:56:00 +03:00
parent a337b844ec
commit 7ab9160ee1
3 changed files with 5 additions and 2 deletions

View file

@ -17,7 +17,7 @@ func MaybePreprocessImage(filename string, data []byte, width, height int) (resi
ext := filepath.Ext(filename) ext := filepath.Ext(filename)
ext = strings.ToLower(ext) ext = strings.ToLower(ext)
switch ext { switch ext {
case ".png", ".gif": case ".png", ".gif", ".webp":
return Resized(ext, data, width, height) return Resized(ext, data, width, height)
case ".jpg", ".jpeg": case ".jpg", ".jpeg":
data = FixJpgOrientation(data) data = FixJpgOrientation(data)

View file

@ -6,6 +6,7 @@ import (
"image/gif" "image/gif"
"image/jpeg" "image/jpeg"
"image/png" "image/png"
"github.com/chai2010/webp"
"github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/glog"
"github.com/disintegration/imaging" "github.com/disintegration/imaging"
@ -37,6 +38,8 @@ func Resized(ext string, data []byte, width, height int) (resized []byte, w int,
jpeg.Encode(&buf, dstImage, nil) jpeg.Encode(&buf, dstImage, nil)
case ".gif": case ".gif":
gif.Encode(&buf, dstImage, nil) gif.Encode(&buf, dstImage, nil)
case ".webp":
webp.Encode(&buf, dstImage, &webp.Options{Quality: 70})
} }
return buf.Bytes(), dstImage.Bounds().Dx(), dstImage.Bounds().Dy() return buf.Bytes(), dstImage.Bounds().Dx(), dstImage.Bounds().Dy()
} else { } else {

View file

@ -136,7 +136,7 @@ func (vs *VolumeServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request)
} }
} }
} }
if ext == ".png" || ext == ".jpg" || ext == ".gif" { if ext == ".png" || ext == ".jpg" || ext == ".gif"|| ext == ".webp" {
width, height := 0, 0 width, height := 0, 0
if r.FormValue("width") != "" { if r.FormValue("width") != "" {
width, _ = strconv.Atoi(r.FormValue("width")) width, _ = strconv.Atoi(r.FormValue("width"))