From a8090ff47ecce8443b0bb0da5b19b22aaacc4f1f Mon Sep 17 00:00:00 2001 From: Nova Kwok Date: Thu, 15 Jun 2023 17:10:53 +0800 Subject: [PATCH] Ignore sisze when source is GIF (#233) * Ignore sisze when source is GIF * error strings should not be capitalized (ST1005) --- encoder.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/encoder.go b/encoder.go index df97fde..4e3a807 100644 --- a/encoder.go +++ b/encoder.go @@ -114,6 +114,17 @@ func avifEncoder(p1, p2 string, quality int, extraParams ExtraParams) error { return err } + // Ignore Unknown, WebP, AVIF + ignoreList := []vips.ImageType{vips.ImageTypeUnknown, vips.ImageTypeWEBP, vips.ImageTypeAVIF} + + imageFormat := img.Format() + for _, ignore := range ignoreList { + if imageFormat == ignore { + // Return err to render original image + return errors.New("encoder: ignore image type") + } + } + if config.EnableExtraParams { err = resizeImage(img, extraParams) if err != nil { @@ -175,6 +186,17 @@ func webpEncoder(p1, p2 string, quality int, extraParams ExtraParams) error { return err } + // Ignore Unknown, WebP, AVIF + ignoreList := []vips.ImageType{vips.ImageTypeUnknown, vips.ImageTypeWEBP, vips.ImageTypeAVIF} + + imageFormat := img.Format() + for _, ignore := range ignoreList { + if imageFormat == ignore { + // Return err to render original image + return errors.New("encoder: ignore image type") + } + } + if config.EnableExtraParams { err = resizeImage(img, extraParams) if err != nil { @@ -183,7 +205,8 @@ func webpEncoder(p1, p2 string, quality int, extraParams ExtraParams) error { } // The maximum pixel dimensions of a WebP image is 16383 x 16383. - if img.Metadata().Width > webpMax || img.Metadata().Height > webpMax { + // But GIF is exception, it can be larger than 16383 + if (img.Metadata().Width > webpMax || img.Metadata().Height > webpMax) && imageFormat != vips.ImageTypeGIF { return errors.New("WebP: image too large") }