1

我想裁剪从 Google Maps Static API 保存的图像的多边形(我有一个透明区域)。然后我创建了第二个图像,将其保存并在其上尝试了相同的脚本,但不同之处在于第二个尝试的图像没有效果/更改,但它是相同的图像。也许是一个 PHP 错误?我正在使用 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

4

1 回答 1

0

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

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

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

于 2011-12-24T14:05:40.007 回答