From c920180cb3f06b9ceb6e2ca1d56aaaf1bafb8ef5 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Sat, 23 Apr 2016 19:50:00 +0100 Subject: [PATCH] Remove (un)premultiply ops when not resizing/compositing #413 --- docs/changelog.md | 6 ++++++ src/pipeline.cc | 10 +++++----- test/fixtures/expected/embed-16bit-rgba.png | Bin 755 -> 782 bytes .../expected/threshold-128-transparency.webp | Bin 12188 -> 23110 bytes 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index ca8dcc4d..13756a3b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -4,6 +4,12 @@ Requires libvips v8.2.3 +#### v0.14.2 - TBD + +* Remove unnecessary (un)premultiply operations when not resizing/compositing. + [#413](https://github.com/lovell/sharp/issues/413) + [@jardakotesovec](https://github.com/jardakotesovec) + #### v0.14.1 - 16th April 2016 * Allow removal of limitation on input pixel count via limitInputPixels. Use with care. diff --git a/src/pipeline.cc b/src/pipeline.cc index 35e23a49..2518c0f5 100644 --- a/src/pipeline.cc +++ b/src/pipeline.cc @@ -288,12 +288,12 @@ class PipelineWorker : public AsyncWorker { // are already less than the required dimensions if (baton->withoutEnlargement) { if (inputWidth < baton->width || inputHeight < baton->height) { - xfactor = 1; - yfactor = 1; + xfactor = 1.0; + yfactor = 1.0; xshrink = 1; yshrink = 1; - xresidual = 0; - yresidual = 0; + xresidual = 1.0; + yresidual = 1.0; baton->width = inputWidth; baton->height = inputHeight; } @@ -431,7 +431,7 @@ class PipelineWorker : public AsyncWorker { ); } - bool shouldAffineTransform = xresidual != 0.0 || yresidual != 0.0; + bool shouldAffineTransform = xresidual != 1.0 || yresidual != 1.0; bool shouldBlur = baton->blurSigma != 0.0; bool shouldSharpen = baton->sharpenRadius != 0; bool shouldThreshold = baton->threshold != 0; diff --git a/test/fixtures/expected/embed-16bit-rgba.png b/test/fixtures/expected/embed-16bit-rgba.png index 70e3f3655c8ac088d3120c8ca620e79f371b3fc7..e50edc89ce8c2dd6550d039a496555f1fbdf9be0 100644 GIT binary patch delta 737 zcmV<70v`SI1&#)gIe)-OL_t(YiM5l>Yg1Vmho4+-ZX55t)>~~cqSa~oVN10$4hVxS z&FHEKLKg#}3la1m5N6YbBwZB$fms&>UAa+27t%#81RStRGbs)f8?_iwG`+M2lBD=D(l70T{S^nSq_c6<5^jEJ~-nVZe-rk-#F*ukXx^|7srAxEDy}iXm zB2nBkfl{d?7Zw(f)hd1W?(y@^4&wN6dXh;(-)FpcDG zDT}Q|cHZqUXU`FaAs;??luCbMnt$Oqf0It1rl+T;sKQoiptG}+RGfk(a7~vm4oQYd zgb)Nlz}nhb8jULH^g6ZL6*8IMP`v^r0mpGjZKtqnHt%`Qr|=VctkY_>@O_`PwO?_Z z1>U~hB!7xNa_(H(RpBZN7=}?uYiT-K9dvnJG@~Y3tP#gCzVG9C5eE*u#I_wY&0=iq zWN}Xg0B%p;p3P}FhRQ==gCPv!I3@@JgeX(5cj9>?+`03MJ2Em<*mHqnUB?PHuiyOr zYTs4bo9!U@+`y3|4={{v9zL9KbGgZ^D)XBJ09tfiFJ8`FPCPpG$eomvL{UT#1dNRx z=E;*A?)melzG=DANGbpKd7f98pP!dAGc&SYuV=rM`(Xl7N`w$u-}k?`Tt(nNM#FJ$ TZmtnY00000NkvXXu0mjfc0p?c delta 710 zcmV;%0y+JT2J;1wIe(=|L_t(YiN%z^OB-Pv#-E%yW4Md)M1v8DEityFAjLwVHNike zH?fP8e?kWrDJ3bA4jrUJXF)A4mLL>|mSXRSL(vS{NazrQ38rXc5~7#n^4^cPTWPn~ zD(y3W-_P^m8D8K&$No2u2qBS7CKJh|)3E@h%AIIb?h6FsH-GH*XAHxLWV6}$+qE_N zY-WbO3RRNW91$(#mkhaojet&Nw;YxrIg0r(4c6R0=2yY-s zU*PqQ!RPbIENrF)dV71}G@QUbpa=?xLBJCprfH(xZlhRy2vyC)>#d?xnuFi}2pq@V zoPZ=ra5kK9m0UQ*DbC3`?1mkdWkJ(46pIfaNuO|Xasgd0V`9RquyC0L91cg^%X#6p z+~}|MqkpBhz!@A2!+@q~sMU1z^yJ`jN#HmUq0n8KRiK0QFtwVpH4YjPQX(h}7clT+ z0OPiCl*?tL(>ip$0ad++)zzR9jXs`Z$<%DZvFFaYZox_Yk|SR_fXYA zB$Ja$G&&YxWnM`D0C=940ob;`ZOdD^tw~+i(LZjt5ef|;7JIIYjEr2V{938iYVqae sWxBAiKr5BXzbpPdrfEhrO}ke4PoAPMBgFoK$p8QV07*qoM6N<$f(Y7CU;qFB diff --git a/test/fixtures/expected/threshold-128-transparency.webp b/test/fixtures/expected/threshold-128-transparency.webp index c86a254fb7fc8744b1f7d4b53a78a2f54e7da42b..cd1f2f5a341d3710adf5e8ea3b0a67e33eafbb1a 100644 GIT binary patch delta 21074 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