]> granicus.if.org Git - php/commitdiff
- MFB: #39273, imagecopyresized and alpha channel
authorPierre Joye <pajoye@php.net>
Sat, 4 Nov 2006 02:23:45 +0000 (02:23 +0000)
committerPierre Joye <pajoye@php.net>
Sat, 4 Nov 2006 02:23:45 +0000 (02:23 +0000)
ext/gd/libgd/gd.c
ext/gd/tests/bug39273.phpt [new file with mode: 0644]

index 14dcc110c77251274bb88e7d7017217b38c3797b..ff2b0596f56005180d939554389d8b8b1875eccb 100644 (file)
@@ -754,7 +754,7 @@ int gdImageGetTrueColorPixel (gdImagePtr im, int x, int y)
        int p = gdImageGetPixel(im, x, y);
 
        if (!im->trueColor)  {
-               return gdTrueColorAlpha(im->red[p], im->green[p], im->blue[p], (im->transparent == p) ? gdAlphaTransparent : gdAlphaOpaque);
+               return gdTrueColorAlpha(im->red[p], im->green[p], im->blue[p], (im->transparent == p) ? gdAlphaTransparent : im->alpha[p]);
        } else {
                return p;
        }
diff --git a/ext/gd/tests/bug39273.phpt b/ext/gd/tests/bug39273.phpt
new file mode 100644 (file)
index 0000000..4384500
--- /dev/null
@@ -0,0 +1,32 @@
+--TEST--
+Bug #37360 (gdimagecreatefromgif, bad image sizes)
+--SKIPIF--
+<?php 
+       if (!extension_loaded('gd')) die("skip gd extension not available\n"); 
+       if (!GD_BUNDLED) die('skip external GD libraries always fail');
+?>
+--FILE--
+<?php
+$small = imagecreatetruecolor(10, 10);
+$c1 = imagecolorallocatealpha($small, 255,0,0,50);
+imagecolortransparent($small, 0);
+imagealphablending($small, 0);
+imagefilledrectangle($small, 0,0, 6,6, $c1);
+
+$width = 300;
+$height = 300;
+$srcw = imagesx($small);
+$srch = imagesy($small);
+
+$img = imagecreatetruecolor($width, $height);
+
+imagecolortransparent($img, 0);
+imagealphablending($img, false);
+imagecopyresized($img, $small, 0,0, 0,0, $width, $height, $srcw, $srch);
+imagesavealpha($img, 1);
+
+$c = imagecolorat($img, 0,0);
+printf("%X", $c);
+?>
+--EXPECTF--
+32FF0000