PNG透明度问题

时间:2014-11-19 17:51:44

标签: php image transparency

我有以下问题。 我有一个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;那些粉红色的像素呢?

1 个答案:

答案 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参数。