From: Christoph M. Becker Date: Mon, 13 Jul 2015 20:14:13 +0000 (+0200) Subject: Fix #66882: imagerotate by -90 degrees truncates image by 1px X-Git-Tag: php-7.1.1RC1~35^2~9 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=36439cf7b8b00249f8f90be9dabe1e24bbadf7a1;p=php Fix #66882: imagerotate by -90 degrees truncates image by 1px Contrary to the external libgd, the bundled libgd doesn't use optimized rotation algorithms for negative square angles. We fix that now. There are other improvements in gdImageRotateInterpolated() in the external libgd. I'll leave them out for now, in the hope that we'll be able to rejoin the two libraries rather soon. --- diff --git a/ext/gd/libgd/gd_interpolation.c b/ext/gd/libgd/gd_interpolation.c index e2c9f05306..94c4968d29 100644 --- a/ext/gd/libgd/gd_interpolation.c +++ b/ext/gd/libgd/gd_interpolation.c @@ -2178,10 +2178,13 @@ gdImagePtr gdImageRotateInterpolated(const gdImagePtr src, const float angle, in /* no interpolation needed here */ switch (angle_rounded) { - case 9000: + case -27000: + case 9000: return gdImageRotate90(src, 0); - case 18000: + case -18000: + case 18000: return gdImageRotate180(src, 0); + case -9000: case 27000: return gdImageRotate270(src, 0); } diff --git a/ext/gd/tests/bug66882.phpt b/ext/gd/tests/bug66882.phpt new file mode 100644 index 0000000000..6dfbdfe06d --- /dev/null +++ b/ext/gd/tests/bug66882.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #66882 (imagerotate by -90 degrees truncates image by 1px) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +int(10) +int(10)