При попытке конвертировать 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);