PHP GD:裁剪多边形:适用于某些图像,有些则不适用

时间:2011-12-23 23:43:32

标签: php php-gd

我想裁剪出我从Google Maps Static API保存的图像的多边形(我有一个透明区域)。 然后我创建了第二个图像,保存并尝试了相同的脚本但不同之处在于第二个尝试过的图像没有效果/变化,但它是相同的图像。也许是一个PHP bug? 我正在使用PHP 5.3.3。

<?php
$image = imagecreatefrompng('map.png');
$image2 = imagecreatefrompng('map2.png');


$black = imagecolorallocatealpha($image, 0, 0, 0, 127);
$black2 = imagecolorallocatealpha($image2, 0, 0, 0, 127);


imagefilledpolygon($image, array(0,0, 20,20, 0,20), 3, $black);
imagefilledpolygon($image2, array(0,0, 20,20, 0,20), 3, $black2);

header('Content-Type: image/png');
imagepng($image);
#imagepng($image2);
?>

图片1: 1

图片2: 2

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:您必须为图像设置imagealphablending imagesavealpha设置才能使此透明度正常工作。问题还在于这些图像具有不同的位。工作图像有8位,而不工作有24位。

imagealphablending($image2, false);
imagesavealpha($image2, true);

这条评论对我很有帮助:http://www.php.net/manual/en/function.imagecreatefrompng.php#47083