Browse Source

Fix scale recalculation after scale-on-load

DarthSim 3 years ago
parent
commit
a3f6fe6d39
2 changed files with 3 additions and 2 deletions
  1. 1 0
      CHANGELOG.md
  2. 2 2
      processing/scale_on_load.go

+ 1 - 0
CHANGELOG.md

@@ -12,6 +12,7 @@
 
 ### Fix
 - Fix Client Hints behavior. `Width` is physical size, so we should divide it by `DPR` value.
+- Fix scale-on-load in some rare cases.
 
 ## [3.0.0.beta1] - 2021-10-01
 ### Added

+ 2 - 2
processing/scale_on_load.go

@@ -59,12 +59,12 @@ func scaleOnLoad(pctx *pipelineContext, img *vips.Image, po *options.ProcessingO
 	newWidth, newHeight, _, _ := extractMeta(img, po.Rotate, po.AutoRotate)
 
 	pctx.wscale = float64(pctx.srcWidth) * pctx.wscale / float64(newWidth)
-	if pctx.srcWidth == imath.Scale(pctx.srcWidth, pctx.wscale) {
+	if newWidth == imath.Scale(newWidth, pctx.wscale) {
 		pctx.wscale = 1.0
 	}
 
 	pctx.hscale = float64(pctx.srcHeight) * pctx.hscale / float64(newHeight)
-	if pctx.srcHeight == imath.Scale(pctx.srcHeight, pctx.hscale) {
+	if newHeight == imath.Scale(newHeight, pctx.hscale) {
 		pctx.hscale = 1.0
 	}