我有以下问题。我有一个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 和 imagealpha 混合命令,但仍然没有运气,它是黑色的,正如您在 Ive 附加的链接中看到的那样。有谁知道如何保持原始透明度并"添加"那些粉红色像素?
您的图像是基于调色板的,而不是真彩色的,因此不需要调用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>= 5.4,否则imagecolorset()
将不接受 alpha
参数。