巴布亚新几内亚透明度问题


PNG transparency issue

我有以下问题。我有一个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 参数。