From 4a90b18a633606d4457f3833deae836219cfbcc8 Mon Sep 17 00:00:00 2001 From: Nova Kwok Date: Sat, 4 Nov 2023 22:22:56 +0800 Subject: [PATCH] Fix bug that could remove original image (#287) * Fix bug that could remove original image * Refine notice --- encoder/encoder.go | 14 +++++++++----- encoder/jpgconvert.go | 11 ++++++----- handler/router.go | 2 +- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/encoder/encoder.go b/encoder/encoder.go index 969faed..cf9e150 100644 --- a/encoder/encoder.go +++ b/encoder/encoder.go @@ -112,9 +112,11 @@ func convertImage(raw, optimized, imageType string, extraParams config.ExtraPara if err != nil { log.Error(err.Error()) } - var jpgRaw = ConvertRawToJPG(raw, optimized) - if jpgRaw != raw { - raw = jpgRaw + // Convert NEF image to JPG first + var convertedRaw, converted = ConvertRawToJPG(raw, optimized) + // If converted, use converted file as raw + if converted { + raw = convertedRaw } switch imageType { case "webp": @@ -122,8 +124,10 @@ func convertImage(raw, optimized, imageType string, extraParams config.ExtraPara case "avif": err = avifEncoder(raw, optimized, extraParams) } - if jpgRaw == raw { - err := os.Remove(jpgRaw) + // Remove converted file after convertion + if converted { + log.Infoln("Removing intermediate conversion file:", convertedRaw) + err := os.Remove(convertedRaw) if err != nil { log.Warnln("failed to delete converted file", err) } diff --git a/encoder/jpgconvert.go b/encoder/jpgconvert.go index 355c44d..b4fae7b 100644 --- a/encoder/jpgconvert.go +++ b/encoder/jpgconvert.go @@ -1,15 +1,16 @@ package encoder import ( - "github.com/jeremytorres/rawparser" "path/filepath" "strings" + + "github.com/jeremytorres/rawparser" ) -func ConvertRawToJPG(rawPath, optimizedPath string) string { +func ConvertRawToJPG(rawPath, optimizedPath string) (string, bool) { if !strings.HasSuffix(strings.ToLower(rawPath), ".nef") { // Maybe can use rawParser to convert other raw files to jpg, but I haven't tested it - return rawPath + return rawPath, false } parser, _ := rawparser.NewNefParser(true) info := &rawparser.RawFileInfo{ @@ -20,7 +21,7 @@ func ConvertRawToJPG(rawPath, optimizedPath string) string { _, err := parser.ProcessFile(info) if err == nil { _, file := filepath.Split(rawPath) - return optimizedPath + file + "_extracted.jpg" + return optimizedPath + file + "_extracted.jpg", true } - return rawPath + return rawPath, false } diff --git a/handler/router.go b/handler/router.go index 7d86bd8..bbc431f 100644 --- a/handler/router.go +++ b/handler/router.go @@ -145,7 +145,7 @@ func Convert(c *fiber.Ctx) error { // Check the original image for existence, if !helper.ImageExists(rawImageAbs) { helper.DeleteMetadata(reqURIwithQuery, targetHostName) - msg := "image not found" + msg := "Image not found!" _ = c.Send([]byte(msg)) log.Warn(msg) _ = c.SendStatus(404)