From 1dc0c8c9a3b4b9fdbafd1e55f6264113d91e6afa Mon Sep 17 00:00:00 2001 From: DarthSim Date: Mon, 28 Sep 2020 21:15:16 +0600 Subject: [PATCH] Disable scale-on-load for animated images --- CHANGELOG.md | 3 +++ process.go | 24 +++--------------------- 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9eef3201..029de736 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ - AVIF support. - (pro) Remove Adobe Illustrator garbage from SVGs. +### Changed +- Disable scale-on-load for animated images since it causes many problems. Currently, only animated WebP is affected. + ### Fix - Fix `dpr` option. - Fix non-strict SVG detection. diff --git a/process.go b/process.go index 9f81bda1..c4982887 100644 --- a/process.go +++ b/process.go @@ -536,27 +536,9 @@ func transformAnimated(ctx context.Context, img *vipsImage, data []byte, po *pro } // Vips 8.8+ supports n-pages and doesn't load the whole animated image on header access - if nPages, _ := img.GetInt("n-pages"); nPages > 0 { - scale := 1.0 - - // Don't do scale on load if DPR != 1 or we need to crop - // because it causes problems in these cases. - // TODO: Rewrite scaling - if po.Dpr == 1.0 && po.Crop.Width == 0 && po.Crop.Height == 0 { - scale = calcScale(imgWidth, frameHeight, po, imgtype) - } - - if nPages > framesCount || canScaleOnLoad(imgtype, scale) { - // Do some scale-on-load and load only the needed frames - if err = img.Load(data, imgtype, 1, scale, framesCount); err != nil { - return err - } - } - - imgWidth = img.Width() - - frameHeight, err = img.GetInt("page-height") - if err != nil { + if nPages, _ := img.GetInt("n-pages"); nPages > framesCount { + // Load only the needed frames + if err = img.Load(data, imgtype, 1, 1.0, framesCount); err != nil { return err } }