Edit report at https://bugs.php.net/bug.php?id=66714&edit=1
ID: 66714
Comment by: chrispmaiden at gmail dot com
Reported by: drew dot mclellan at gmail dot com
Summary: imageconvolution processing output inconsistent with
previous versions
Status: Open
Type: Bug
Package: GD related
Operating System: Linux
PHP Version: 5.5.9
Block user comment: N
Private report: N
New Comment:
I can confirm Brad's findings, it looks like this commit https://github.com/php/php-src/commit/2938329ce19cb8c4197dec146c3ec887c6f61d01
introduced the problem. It's the only change in imageconvolution between the two versions and
looks like a simple typo.
Previous Comments:
------------------------------------------------------------------------
[2014-02-19 21:28:00] brad at bradleyboy dot com
I have limited C knowledge, but this looks like a simple typo in a recent change. Pull request here:
https://github.com/php/php-src/pull/597
------------------------------------------------------------------------
[2014-02-19 17:57:42] brad at bradleyboy dot com
Here's an image to show the visual differences between 5.5.8 and 5.5.9. As Drew notes,
it's significant. These tests were run on OS X, but the issue is also present on Linux (and I
assume Windows, but do not have a way to test that to confirm).
In the test, the following matrix was applied:
$matrix = array(array(-1, -1, -1), array(-1, 20, -1), array(-1, -1, -1));
$divisor = array_sum(array_map('array_sum', $matrix));
imageconvolution($image, $matrix, $divisor, 0);
Result: http://bradleyboy.com/php-5.5.9-imageconvolution.jpg
------------------------------------------------------------------------
[2014-02-18 08:16:08] chris at lodesys dot com
Seeing the same problem in Windows.
In testing, it appears that the $sharpenMatrix is being ignored by imageconvolution() and a matrix
of all 1's is being used instead. This results in a blurred image no matter what values are
used for $sharpenMatrix.
I consider this a critical bug as my sites rely on the ability to resize and sharpen images (with
imageconvolution). Have had to revert to 5.9.8.
------------------------------------------------------------------------
[2014-02-14 19:22:34] drew dot mclellan at gmail dot com
Description:
------------
The behaviour of imageconvolution() appears to have changed in PHP 5.5.9. The results are visual, so
hard to describe, but the behaviour is significantly different from earlier versions.
The test script is boilerplate code for basic image sharpening, as found all over the web. In PHP
5.5.9 the result is a loss of brightness in the resulting image.
Test script:
---------------
$image = imagecreatefromjpeg('/path/to/picture.jpg');
$matrix = array(array(-1, -1, -1), array(-1, 20, -1), array(-1, -1, -1));
$divisor = array_sum(array_map('array_sum', $matrix));
imageconvolution($image, $matrix, $divisor, 0);
echo imagecolorat($image, 0, 0);
Expected result:
----------------
The echo'd output (colour reference number at 0,0) should be the same in PHP 5.5.8 and 5.5.9
for the same input image.
Actual result:
--------------
The output number is much lower in 5.5.9 than 5.5.8, indicating a darker colour and a loss of
brightness. The issue is that the behaviour has changed.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=66714&edit=1