我有以下问题。 我有一个PNG文件(http://meteopage.com/beta/image.png),它已经部分透明,我想制作粉红色"边界也透明。 我在这里阅读了一些说明,并提出了一个代码,它用透明点替换边框,但其余已经透明的部分变为黑色:http://meteopage.com/beta/radar2.php
我的代码如下所示:
<?php
$file="image.png";
$im = imagecreatefrompng($file);
imagealphablending($im, false);
$new = imagecolorclosest($im, 255, 0, 255);
imagecolortransparent($im, $new);
imagesavealpha($im, true);
header('Content-type: image/png');
imagepng($im);
?>
我尝试添加那些imagesavealpha和imagealphablending命令,但仍然没有运气,它是黑色的,你可以在我附加的链接中看到。谁会知道如何保持原有的透明度,只需添加&#34;那些粉红色的像素呢?
答案 0 :(得分:2)
您的图片是基于调色板的,而不是真彩色,因此不需要调用imagealphablending()
和imagesavealpha()
。
最简单的方法是将调色板索引中的粉红色替换为透明色,如下所示:
$file = 'image.png';
$im = imagecreatefrompng($file);
$new = imagecolorclosest($im, 255, 0, 255);
imagecolorset($im, $new, 255, 0, 255, 127);
header('Content-type: image/png');
imagepng($im);
请注意,这需要PHP&gt; = 5.4否则imagecolorset()
将不接受alpha
参数。