- MFH #39366, imagerotate does not use alpha with angles>45

This commit is contained in:
Pierre Joye 2006-11-04 03:15:31 +00:00
parent 59841dd25c
commit d05ef39c74
3 changed files with 35 additions and 1 deletions

3
NEWS
View File

@ -11,7 +11,8 @@ PHP NEWS
. Make sure PHP_SELF is filtered in Apache 1 sapi.
. Fixed bug #39358 (INSTALL_HEADERS contains incorrect reference to
php_filter.h).
- Fixed bug #39273 (imagecopyresized may ignore alpha channel)
- Fixed bug #39366 (imagerotate does not use alpha with angle > 45°) (Pierre)
- Fixed bug #39273 (imagecopyresized may ignore alpha channel) (Pierre)
- Fixed bug #39364 (Removed warning on empty haystack inside mb_strstr()).
(Ilia)
- Fixed bug #39354 (Allow building of curl extension against libcurl 7.16.0)

View File

@ -2750,6 +2750,9 @@ gdImagePtr gdImageRotate90 (gdImagePtr src, int ignoretransparent)
dst->transparent = src->transparent;
if (dst != NULL) {
int old_blendmode = dst->alphaBlendingFlag;
dst->alphaBlendingFlag = 0;
gdImagePaletteCopy (dst, src);
for (uY = 0; uY<src->sy; uY++) {
@ -2769,6 +2772,7 @@ gdImagePtr gdImageRotate90 (gdImagePtr src, int ignoretransparent)
}
}
}
dst->alphaBlendingFlag = old_blendmode;
}
return dst;
@ -2792,6 +2796,9 @@ gdImagePtr gdImageRotate180 (gdImagePtr src, int ignoretransparent)
dst->transparent = src->transparent;
if (dst != NULL) {
int old_blendmode = dst->alphaBlendingFlag;
dst->alphaBlendingFlag = 0;
gdImagePaletteCopy (dst, src);
for (uY = 0; uY<src->sy; uY++) {
@ -2812,6 +2819,7 @@ gdImagePtr gdImageRotate180 (gdImagePtr src, int ignoretransparent)
}
}
}
dst->alphaBlendingFlag = old_blendmode;
}
return dst;
@ -2835,6 +2843,9 @@ gdImagePtr gdImageRotate270 (gdImagePtr src, int ignoretransparent)
dst->transparent = src->transparent;
if (dst != NULL) {
int old_blendmode = dst->alphaBlendingFlag;
dst->alphaBlendingFlag = 0;
gdImagePaletteCopy (dst, src);
for (uY = 0; uY<src->sy; uY++) {
@ -2855,6 +2866,7 @@ gdImagePtr gdImageRotate270 (gdImagePtr src, int ignoretransparent)
}
}
}
dst->alphaBlendingFlag = old_blendmode;
}
return dst;

View File

@ -0,0 +1,21 @@
--TEST--
Bug #39366 (imagerotate does not respect alpha with angles>45)
--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
$im = imagecreatetruecolor(10,10);
imagealphablending($im, 0);
imagefilledrectangle($im, 0,0, 8,8, 0x32FF0000);
$rotate = imagerotate($im, 180, 0);
imagecolortransparent($rotate,0);
imagesavealpha($rotate, true);
$c = imagecolorat($rotate,5,5);
printf("%X\n", $c);
?>
--EXPECTF--
32FF0000