Bug #66882 [Ana->Csd]: imagerotate by -90 degrees truncates image by 1px

From: 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

« previous php.bugs (#194418) next »