From bfe57b92021e26510099d3635c40f13b9d341304 Mon Sep 17 00:00:00 2001 From: RoccoSmit Date: Sat, 31 Aug 2024 05:37:07 +1000 Subject: [PATCH] chore: set max thumbnail width to home/explore image max width (#3852) * Set max thumbnail width to timeline img max width * Prevent images less than thumbnail size from being scaled up * Apply suggestions from code review --------- Co-authored-by: boojack <24653555+boojack@users.noreply.github.com> --- server/router/api/v1/resource_service.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/server/router/api/v1/resource_service.go b/server/router/api/v1/resource_service.go index 63523cbf..bca5360a 100644 --- a/server/router/api/v1/resource_service.go +++ b/server/router/api/v1/resource_service.go @@ -5,6 +5,7 @@ import ( "context" "encoding/binary" "fmt" + "image" "io" "log/slog" "os" @@ -434,11 +435,19 @@ func (s *APIV1Service) getOrGenerateThumbnail(resource *store.Resource) ([]byte, if err != nil { return nil, errors.Wrap(err, "failed to get resource blob") } - image, err := imaging.Decode(bytes.NewReader(blob), imaging.AutoOrientation(true)) + img, err := imaging.Decode(bytes.NewReader(blob), imaging.AutoOrientation(true)) if err != nil { return nil, errors.Wrap(err, "failed to decode thumbnail image") } - thumbnailImage := imaging.Resize(image, 512, 0, imaging.Lanczos) + + thumbnailMaxWidth := 700 // equal to home/explore screen image max width + var thumbnailImage image.Image + if img.Bounds().Max.X > thumbnailMaxWidth { + thumbnailImage = imaging.Resize(img, thumbnailMaxWidth, 0, imaging.Lanczos) + } else { + thumbnailImage = img + } + if err := imaging.Save(thumbnailImage, filePath); err != nil { return nil, errors.Wrap(err, "failed to save thumbnail file") }