GDlib PHP - png 到 gif returns 背景透明到黑色
GDlib PHP - png to gif returns background transparent to black
尝试将 PNG 转换为 GIF 时,return 透明为黑色:
$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 gradients transparencies" 的绝对透明背景。 Imagick 使用一半渐变透明胶片到绝对透明,另一半到绝对纯色。谢谢 isalgueiro!
$black = imagecolorallocate($img, 0, 0, 0);
imagecolortransparent($img, $black);
我想你需要打电话给 imagecolorallocate to get the color reference and pass that to imagecolortransparent:
$black = imagecolorallocate($im, 0, 0, 0);
imagecolortransparent($img, $black);
尝试将 PNG 转换为 GIF 时,return 透明为黑色:
$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 gradients transparencies" 的绝对透明背景。 Imagick 使用一半渐变透明胶片到绝对透明,另一半到绝对纯色。谢谢 isalgueiro!
$black = imagecolorallocate($img, 0, 0, 0);
imagecolortransparent($img, $black);
我想你需要打电话给 imagecolorallocate to get the color reference and pass that to imagecolortransparent:
$black = imagecolorallocate($im, 0, 0, 0);
imagecolortransparent($img, $black);