diff --git a/weed/images/resizing.go b/weed/images/resizing.go index b048daa1c..20b9a5030 100644 --- a/weed/images/resizing.go +++ b/weed/images/resizing.go @@ -11,6 +11,8 @@ import ( "github.com/disintegration/imaging" "github.com/chrislusf/seaweedfs/weed/glog" + + _ "golang.org/x/image/webp" ) func Resized(ext string, read io.ReadSeeker, width, height int, mode string) (resized io.ReadSeeker, w int, h int) { @@ -47,6 +49,9 @@ func Resized(ext string, read io.ReadSeeker, width, height int, mode string) (re jpeg.Encode(&buf, dstImage, nil) case ".gif": gif.Encode(&buf, dstImage, nil) + case ".webp": + // Webp does not have golang encoder. + png.Encode(&buf, dstImage) } return bytes.NewReader(buf.Bytes()), dstImage.Bounds().Dx(), dstImage.Bounds().Dy() } else { diff --git a/weed/images/resizing_test.go b/weed/images/resizing_test.go new file mode 100644 index 000000000..d12f799d8 --- /dev/null +++ b/weed/images/resizing_test.go @@ -0,0 +1,23 @@ +package images + +import ( + "bytes" + "io/ioutil" + "os" + "testing" +) + +func TestResizing(t *testing.T) { + fname := "sample2.webp" + + dat, _ := ioutil.ReadFile(fname) + + resized, _, _ := Resized(".webp", bytes.NewReader(dat), 100, 30, "") + buf := new(bytes.Buffer) + buf.ReadFrom(resized) + + ioutil.WriteFile("resized1.png", buf.Bytes(), 0644) + + os.Remove("resized1.png") + +} diff --git a/weed/images/sample2.webp b/weed/images/sample2.webp new file mode 100644 index 000000000..1fdfc01fc Binary files /dev/null and b/weed/images/sample2.webp differ diff --git a/weed/server/volume_server_handlers_read.go b/weed/server/volume_server_handlers_read.go index c5afd9545..cbad9c770 100644 --- a/weed/server/volume_server_handlers_read.go +++ b/weed/server/volume_server_handlers_read.go @@ -264,7 +264,7 @@ func conditionallyResizeImages(originalDataReaderSeeker io.ReadSeeker, ext strin } func shouldResizeImages(ext string, r *http.Request) (width, height int, mode string, shouldResize bool) { - if ext == ".png" || ext == ".jpg" || ext == ".jpeg" || ext == ".gif" { + if ext == ".png" || ext == ".jpg" || ext == ".jpeg" || ext == ".gif" || ext == ".webp" { if r.FormValue("width") != "" { width, _ = strconv.Atoi(r.FormValue("width")) }