|
|
|
@ -0,0 +1,51 @@ |
|
|
|
--TEST-- |
|
|
|
Bug #47946 (ImageConvolution overwrites background) |
|
|
|
--DESCRIPTION-- |
|
|
|
The expected image has black pixel artifacts, what is another issue, though |
|
|
|
(perhaps #40158). |
|
|
|
--SKIPIF-- |
|
|
|
<?php |
|
|
|
if (!extension_loaded('gd')) die('skip gd extension not available'); |
|
|
|
?> |
|
|
|
--FILE-- |
|
|
|
<?php |
|
|
|
function array_flatten($array) |
|
|
|
{ |
|
|
|
$tempArray = array(); |
|
|
|
|
|
|
|
foreach ($array as $value) { |
|
|
|
if (is_array($value)) { |
|
|
|
$tempArray = array_merge($tempArray, array_flatten($value)); |
|
|
|
} else { |
|
|
|
$tempArray[] = $value; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return $tempArray; |
|
|
|
} |
|
|
|
|
|
|
|
function makeFilter($resource, $matrix, $offset = 1.0) |
|
|
|
{ |
|
|
|
$divisor = array_sum(array_flatten($matrix)); |
|
|
|
if ($divisor == 0) { |
|
|
|
$divisor = .01; |
|
|
|
} |
|
|
|
return imageconvolution($resource, $matrix, $divisor, $offset); |
|
|
|
} |
|
|
|
|
|
|
|
$edgeMatrix = array(array(1, 0, 1), array(0, 5, 0), array(1, 0, 1)); |
|
|
|
|
|
|
|
$im = imagecreatetruecolor(40, 40); |
|
|
|
imagealphablending($im, false); |
|
|
|
imagefilledrectangle($im, 0, 0, 39, 39, 0x7fffffff); |
|
|
|
imagefilledellipse($im, 19, 19, 20, 20, 0x00ff00); |
|
|
|
imagesavealpha($im, true); |
|
|
|
makeFilter($im, $edgeMatrix); |
|
|
|
|
|
|
|
require_once __DIR__ . '/func.inc'; |
|
|
|
test_image_equals_file(__DIR__ . '/bug47946_exp.png', $im); |
|
|
|
?> |
|
|
|
===DONE=== |
|
|
|
--EXPECT-- |
|
|
|
The images are equal. |
|
|
|
===DONE=== |