]> granicus.if.org Git - php/commitdiff
Fixed bug #47946 (ImageConvolution overwrites background)
authorIlia Alshanetsky <iliaa@php.net>
Sun, 12 Apr 2009 14:43:21 +0000 (14:43 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Sun, 12 Apr 2009 14:43:21 +0000 (14:43 +0000)
# original patch by  jcolby at acsol dot net

ext/gd/libgd/gd.c

index 7760fecf20b90d912d40da856099320f31f11444..8971dcc3b8ff6a9d744297861962717c3658f34b 100644 (file)
@@ -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) {