From d792ebcb792b08fcc8ea31552ee1dd22fc330f44 Mon Sep 17 00:00:00 2001 From: Fabian Fritzsche Date: Sat, 4 Jul 2020 15:37:53 +0200 Subject: [PATCH] reorder before imgProcessor & pass file directly --- http/preview.go | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/http/preview.go b/http/preview.go index f0df3521..1428075c 100644 --- a/http/preview.go +++ b/http/preview.go @@ -3,7 +3,6 @@ package http import ( "fmt" "image" - "image/gif" "net/http" "github.com/disintegration/imaging" @@ -60,6 +59,20 @@ func handleImagePreview(w http.ResponseWriter, r *http.Request, file *files.File return errToStatus(err), err } + fd, err := file.Fs.Open(file.Path) + if err != nil { + return errToStatus(err), err + } + defer fd.Close() + + if format == imaging.GIF && size == sizeBig { + _, err := rawFileHandler(w, r, file) + if err != nil { + return errToStatus(err), err + } + return 0, nil + } + var imgProcessor imageProcessor switch size { case sizeBig: @@ -74,24 +87,6 @@ func handleImagePreview(w http.ResponseWriter, r *http.Request, file *files.File return http.StatusBadRequest, fmt.Errorf("unsupported preview size %s", size) } - fd, err := file.Fs.Open(file.Path) - if err != nil { - return errToStatus(err), err - } - defer fd.Close() - - if format == imaging.GIF && size == sizeBig { - g, gerr := gif.DecodeAll(fd) - if gerr != nil { - return errToStatus(gerr), err - } - - if gif.EncodeAll(w, g) != nil { - return errToStatus(gerr), err - } - return 0, nil - } - img, err := imaging.Decode(fd, imaging.AutoOrientation(true)) if err != nil { return errToStatus(err), err