PHP中的imagecolortransparent无法正常工作

Sor*_*yyx 5 php image image-processing

我想将图像中的白色(http://www.arso.gov.si/vreme/napovedi%20in%20podatki/radar.gif)更改为透明.我认为代码看起来正确,没有错误日志,但图片保持不变.我仔细检查图像中的颜色是否真的是白色而且是.请帮忙.

<?php
    $im = imagecreatefromgif("http://www.arso.gov.si/vreme/napovedi%20in%20podatki/radar.gif");

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

    $white = imagecolorallocate($im, 255, 255, 255);

    imagecolortransparent($im, $white);

    imagegif($im, './image_radar_tran.gif');
    imagedestroy($im);
?>
<body style="background-color: lightgoldenrodyellow;">
    <img src="./image_radar_tran.gif" />
</body>
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 5

改变:

$white = imagecolorallocate($im, 255, 255, 255);
Run Code Online (Sandbox Code Playgroud)

到:

$white = imagecolorexact($im, 255, 255, 255);
Run Code Online (Sandbox Code Playgroud)

它会起作用。原因是“白色”颜色已在您使用的 gif 的索引中定义,因此您无法为该颜色分配新索引。相反,使用imagecolorexact,您可以获得要使用的白色的现有索引,然后可以将其更改为透明。