GDlib PHP - png到gif将背景透明变为黑色

时间:2015-01-27 16:19:04

标签: php png gd gif

尝试将PNG转换为GIF时,将透明度恢复为黑色:

$file = "example.png"

$whf = getimagesize($file); 
$wf = $whf[0];
$hf = $whf[1];

$h = "100";
$w = "100";

$img = imagecreatetruecolor($w, $h);
$imgi = imagecreatefrompng($file);

// Here means to be some magic code...

imagecopyresampled($img, $imgi, 0, 0, 0, 0, $w, $h, $wf, $hf);
imagegif($img, "example.gif");

imagedestroy($img);

我尝试过的代码却没有:

1º:

imagesavealpha($img, true);
imagecolortransparent($img, 127<<24);

2º:

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

这个有效!但有一个细节。你需要绝对透明的背景而没有“png渐变透明度”。 Imagick使用半渐变透明度来绝对透明,另一半使用绝对透明。谢谢isalgueiro!

$black = imagecolorallocate($img, 0, 0, 0);
imagecolortransparent($img, $black);    

1 个答案:

答案 0 :(得分:0)

我认为您需要致电imagecolorallocate获取颜色参考并将其传递给imagecolortransparent

$black = imagecolorallocate($im, 0, 0, 0);
imagecolortransparent($img, $black);