mirror of
https://github.com/php/php-src.git
synced 2026-04-16 20:41:18 +02:00
This bug had already been fixed, but apparently there's no regression test yet, so we add one. Note that the expected image has black pixel artifacts, which are another issue (perhaps bug #40158), and would have to be adressed separately.
52 lines
1.3 KiB
PHP
52 lines
1.3 KiB
PHP
--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===
|