From d57d3414f8cea1b2417716ba9ca90dc2d78b9210 Mon Sep 17 00:00:00 2001
From: Sorunome <mail@sorunome.de>
Date: Wed, 17 Jun 2020 13:22:41 +0200
Subject: [PATCH] add webp support

---
 .../thumbnail_controller/thumbnail_resource_handler.go     | 7 ++++++-
 go.mod                                                     | 1 +
 go.sum                                                     | 2 ++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/controllers/thumbnail_controller/thumbnail_resource_handler.go b/controllers/thumbnail_controller/thumbnail_resource_handler.go
index 0086ff1f..805f4b80 100644
--- a/controllers/thumbnail_controller/thumbnail_resource_handler.go
+++ b/controllers/thumbnail_controller/thumbnail_resource_handler.go
@@ -16,6 +16,7 @@ import (
 	"strconv"
 	"sync"
 
+	"github.com/chai2010/webp"
 	"github.com/disintegration/imaging"
 	"github.com/prometheus/client_golang/prometheus"
 	"github.com/sirupsen/logrus"
@@ -154,7 +155,11 @@ func GenerateThumbnail(media *types.Media, width int, height int, method string,
 			return nil, err2
 		}
 		defer cleanup.DumpAndCloseStream(mediaStream)
-		src, err = imaging.Decode(mediaStream)
+		if media.ContentType == "image/webp" {
+			src, err = webp.Decode(mediaStream)
+		} else {
+			src, err = imaging.Decode(mediaStream)
+		}
 	}
 
 	if err != nil {
diff --git a/go.mod b/go.mod
index b66907e5..ba50122e 100644
--- a/go.mod
+++ b/go.mod
@@ -11,6 +11,7 @@ require (
 	github.com/bep/debounce v1.2.0
 	github.com/buckket/go-blurhash v1.0.3
 	github.com/cenk/backoff v2.2.1+incompatible // indirect
+	github.com/chai2010/webp v1.1.0
 	github.com/cupcake/sigil v0.0.0-20131127230922-6bf9722f2ae8
 	github.com/didip/tollbooth v4.0.2+incompatible
 	github.com/disintegration/imaging v1.6.2
diff --git a/go.sum b/go.sum
index 5c0a4250..cfa9fede 100644
--- a/go.sum
+++ b/go.sum
@@ -60,6 +60,8 @@ github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEe
 github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
 github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
 github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/chai2010/webp v1.1.0 h1:4Ei0/BRroMF9FaXDG2e4OxwFcuW2vcXd+A6tyqTJUQQ=
+github.com/chai2010/webp v1.1.0/go.mod h1:LP12PG5IFmLGHUU26tBiCBKnghxx3toZFwDjOYvd3Ow=
 github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE=
 github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ=
 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-- 
GitLab