Bug #66882 [Ana->Csd]: imagerotate by -90 degrees truncates image by 1px
| From: | cmb@php.net | Date: | Mon, 13 Jul 2015 20:34:15 +0000 |
| Subject: | Bug #66882 [Ana->Csd]: imagerotate by -90 degrees truncates image by 1px | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-194418@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=66882&edit=1
ID: 66882
Updated by: cmb@php.net
Reported by: jarrod at makin dot co
Summary: imagerotate by -90 degrees truncates image by 1px
-Status: Analyzed
+Status: Closed
Type: Bug
Package: GD related
Operating System: RHEL6.5
PHP Version: 5.5.10
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Automatic comment on behalf of cmb
Revision: http://git.php.net/?p=php-src.git;a=commit;h=2e34febb733742baf130a9dae4f30f48ffe74d48
Log: Fix #66882: imagerotate by -90 degrees truncates image by 1px
Previous Comments:
------------------------------------------------------------------------
[2015-07-13 20:02:49] cmb@php.net
The issue is rather clear for square angles. As of PHP 5.5.0 the
rotation is done by gdImageRotateInterpolated()[1], which has
special cases for 90, 180 and 270 degrees, but not for their
negative counterparts. That has already been fixed in the external
libgd by adding special cases for -90, -180 and -270 degress[2].
I'm going to port these changes to PHP's bundled libgd as fix for
this ticket. I'm leaving the other ticket open, because the user
comments seem to refer to non-square angles (at least partially),
and these issues deserve some closer investigation.
[1] <https://github.com/php/php-src/blob/php-5.6.11/ext/gd/libgd/gd_interpolation.c#L2156>
[2] <https://github.com/libgd/libgd/blob/gd-2.1.1/src/gd_interpolation.c#L2219-L2229>
------------------------------------------------------------------------
[2015-07-13 10:39:43] jarrod at makin dot co
I agree. I do appear to have reported a duplicate of #65148, the reporter observed that rotations by
negative degrees truncated the picture.
I will aim to build up to date php5.4, 5.5 and 5.6 this week and test.
------------------------------------------------------------------------
[2015-07-12 21:30:14] cmb@php.net
Might be a duplicate of bug #65148.
------------------------------------------------------------------------
[2014-03-12 04:35:41] phpmpan at mpan dot pl
A typo. I meant
gdImageRotateBilinear of course, not gm....
------------------------------------------------------------------------
[2014-03-12 04:34:16] phpmpan at mpan dot pl
Confirmed for master snapshot and 5.5.10.
A quick dive into the code suggests gmImageRotateBilinear contains code that handles
floats inproperly by casting them to int (hence truncating) where extracting integer
part was probably meant.
Minimal code:
$image = imagerotate(imagecreate(10, 10), -90, 0)
echo imagesy($image), 'x', imagesx($image)
If the source image has size of 1x1, the effects are even worse, as the functions below receive 0 as
size.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=66882
--
Edit this bug report at https://bugs.php.net/bug.php?id=66882&edit=1