From 5febba690bdb01442c453b067cd427dd39a381db Mon Sep 17 00:00:00 2001 From: nyne Date: Thu, 27 Nov 2025 21:51:17 +0800 Subject: [PATCH] feat: add redirection to original image if resampled image is not available --- server/api/image.go | 4 ++++ server/service/image.go | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/server/api/image.go b/server/api/image.go index a1e24d0..803aced 100644 --- a/server/api/image.go +++ b/server/api/image.go @@ -88,6 +88,10 @@ func handleGetResampledImage(c fiber.Ctx) error { if err != nil { return err } + if image == nil { + // No resampled image, redirect to original + return c.Redirect().To("/api/image/" + idStr) + } contentType := http.DetectContentType(image) c.Set("Content-Type", contentType) c.Set("Cache-Control", "public, max-age=31536000") diff --git a/server/service/image.go b/server/service/image.go index bf3db3b..f2ea6f3 100644 --- a/server/service/image.go +++ b/server/service/image.go @@ -173,12 +173,17 @@ func deleteImage(id uint) error { return nil } +// GetResampledImage returns a resampled version of the image if it exceeds the maximum pixel limit, otherwise returns nil. func GetResampledImage(id uint) ([]byte, error) { i, err := dao.GetImageByID(id) if err != nil { return nil, err } + if i.Width*i.Height <= resampledMaxPixels { + return nil, nil + } + data, err := getOrCreateResampledImage(i) if err != nil { log.Error("Error getting or creating resampled image:", err)