summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2017-01-22 15:01:01 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2017-01-22 15:01:01 +0100
commit71efe9d8fd0b7486c2943d267c68dcefc6c406b1 (patch)
tree1fd4f997fdb5e3022fd419a0c9aa245080643073
parente56fe7e5e7a926bfdf142a7a844544c0127e92b7 (diff)
downloadphp-git-71efe9d8fd0b7486c2943d267c68dcefc6c406b1.tar.gz
Add regression test for bug #47946
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.
-rw-r--r--ext/gd/tests/bug47946.phpt51
-rw-r--r--ext/gd/tests/bug47946_exp.pngbin0 -> 396 bytes
2 files changed, 51 insertions, 0 deletions
diff --git a/ext/gd/tests/bug47946.phpt b/ext/gd/tests/bug47946.phpt
new file mode 100644
index 0000000000..c84508509c
--- /dev/null
+++ b/ext/gd/tests/bug47946.phpt
@@ -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===
diff --git a/ext/gd/tests/bug47946_exp.png b/ext/gd/tests/bug47946_exp.png
new file mode 100644
index 0000000000..7eb462dd88
--- /dev/null
+++ b/ext/gd/tests/bug47946_exp.png
Binary files differ