aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2021-07-24 09:42:41 -0700
committerGitHub <noreply@github.com>2021-07-24 09:42:41 -0700
commit10464f47d0627e274c7f73ec462b1db4b8b4ade3 (patch)
tree7f28baad89c15bb88577c38134aa7e0dca1e280a
parentac286118176f757e039df9e0349f132be0b126bf (diff)
parent7374b5b473b5c0a796dcb8d003d3a513212e2e80 (diff)
downloadseaweedfs-10464f47d0627e274c7f73ec462b1db4b8b4ade3.tar.xz
seaweedfs-10464f47d0627e274c7f73ec462b1db4b8b4ade3.zip
Merge pull request #2217 from combineads/add_webp_format
-rw-r--r--weed/images/resizing.go5
-rw-r--r--weed/images/resizing_test.go23
-rw-r--r--weed/images/sample2.webpbin0 -> 212586 bytes
-rw-r--r--weed/server/volume_server_handlers_read.go2
4 files changed, 29 insertions, 1 deletions
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
--- /dev/null
+++ b/weed/images/sample2.webp
Binary files 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"))
}