From f42a1ceab78b5e699bc66a8bfcfac0279f05ee9b Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Tue, 30 May 2017 20:22:15 +0100 Subject: [PATCH] Recalculate residual after adjusting shrink #831 --- src/pipeline.cc | 4 +- .../expected/resize-diff-shrink-even.jpg | Bin 0 -> 4075 bytes .../expected/resize-diff-shrink-odd.jpg | Bin 0 -> 6463 bytes test/unit/resize.js | 37 +++++++++++++++--- 4 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/expected/resize-diff-shrink-even.jpg create mode 100644 test/fixtures/expected/resize-diff-shrink-odd.jpg diff --git a/src/pipeline.cc b/src/pipeline.cc index d26dbf4a..29bce040 100644 --- a/src/pipeline.cc +++ b/src/pipeline.cc @@ -291,8 +291,8 @@ class PipelineWorker : public Nan::AsyncWorker { if (xshrink > 1 && yshrink > 1 && (xresidual == 1.0 || yresidual == 1.0)) { xshrink = xshrink / 2; yshrink = yshrink / 2; - xresidual = xresidual / 2.0; - yresidual = yresidual / 2.0; + xresidual = static_cast(xshrink) / xfactor; + yresidual = static_cast(yshrink) / yfactor; } // Ensure we're using a device-independent colour space diff --git a/test/fixtures/expected/resize-diff-shrink-even.jpg b/test/fixtures/expected/resize-diff-shrink-even.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a00853c7ce4dadf942a73856a8344facc0181d22 GIT binary patch literal 4075 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 AM*si- literal 0 HcmV?d00001 diff --git a/test/fixtures/expected/resize-diff-shrink-odd.jpg b/test/fixtures/expected/resize-diff-shrink-odd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2f6c5700ed813ac994ce630414619e746bbebb8 GIT binary patch literal 6463 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