feat: add redirection to original image if resampled image is not available

This commit is contained in:
2025-11-27 21:51:17 +08:00
parent 574e762fd1
commit 5febba690b
2 changed files with 9 additions and 0 deletions

View File

@@ -88,6 +88,10 @@ func handleGetResampledImage(c fiber.Ctx) error {
if err != nil { if err != nil {
return err return err
} }
if image == nil {
// No resampled image, redirect to original
return c.Redirect().To("/api/image/" + idStr)
}
contentType := http.DetectContentType(image) contentType := http.DetectContentType(image)
c.Set("Content-Type", contentType) c.Set("Content-Type", contentType)
c.Set("Cache-Control", "public, max-age=31536000") c.Set("Cache-Control", "public, max-age=31536000")

View File

@@ -173,12 +173,17 @@ func deleteImage(id uint) error {
return nil 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) { func GetResampledImage(id uint) ([]byte, error) {
i, err := dao.GetImageByID(id) i, err := dao.GetImageByID(id)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if i.Width*i.Height <= resampledMaxPixels {
return nil, nil
}
data, err := getOrCreateResampledImage(i) data, err := getOrCreateResampledImage(i)
if err != nil { if err != nil {
log.Error("Error getting or creating resampled image:", err) log.Error("Error getting or creating resampled image:", err)