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>
This commit is contained in:
RoccoSmit 2024-08-31 05:37:07 +10:00 committed by GitHub
parent 0156c7e11f
commit bfe57b9202
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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")
}