mirror of
https://github.com/wgh136/nysoure.git
synced 2025-12-16 07:51:14 +00:00
feat: add redirection to original image if resampled image is not available
This commit is contained in:
@@ -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")
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user