summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2009-04-12 14:43:21 +0000
committerIlia Alshanetsky <iliaa@php.net>2009-04-12 14:43:21 +0000
commitc593790b62f165f976d57cce6b3bb45b1b07c09b (patch)
tree69b2c25c59e81303f59c75ec1f01ae6827b7efe7
parent90a2d1979486b2e7fa14be9c3210b9d321c668f8 (diff)
downloadphp-git-c593790b62f165f976d57cce6b3bb45b1b07c09b.tar.gz
Fixed bug #47946 (ImageConvolution overwrites background)
# original patch by jcolby at acsol dot net
-rw-r--r--ext/gd/libgd/gd.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ext/gd/libgd/gd.c b/ext/gd/libgd/gd.c
index 7760fecf20..8971dcc3b8 100644
--- a/ext/gd/libgd/gd.c
+++ b/ext/gd/libgd/gd.c
@@ -3870,7 +3870,7 @@ int gdImageConvolution(gdImagePtr src, float filter[3][3], float filter_div, flo
int x, y, i, j, new_a;
float new_r, new_g, new_b;
int new_pxl, pxl=0;
- gdImagePtr srcback;
+ gdImagePtr srcback, srctrans;
typedef int (*FuncPtr)(gdImagePtr, int, int);
FuncPtr f;
@@ -3880,6 +3880,10 @@ int gdImageConvolution(gdImagePtr src, float filter[3][3], float filter_div, flo
/* We need the orinal image with each safe neoghb. pixel */
srcback = gdImageCreateTrueColor (src->sx, src->sy);
+ srcback->saveAlphaFlag = 1;
+ srctrans = gdImageColorAllocateAlpha(srcback, 0, 0, 0, 127);
+ gdImageFill(srcback, 0, 0, srctrans);
+
gdImageCopy(srcback, src,0,0,0,0,src->sx,src->sy);
if (srcback==NULL) {