duanjiu1950 2015-01-27 16:19
浏览 78
已采纳

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

When trying to convert PNG to GIF, return transparent to black:

$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);

Codes I've tryed but nothing:

1º:

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

2º:

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

This works! But with one detail. You need absolute transparent background without "png gradients transparencies". Imagick uses half gradient transparencies to absolute transparent and other half to absolute plain. Thanks isalgueiro!

$black = imagecolorallocate($img, 0, 0, 0);
imagecolortransparent($img, $black);    
  • 写回答

1条回答 默认 最新

  • dqjcb132285 2015-01-27 16:25
    关注

    I think you need to call imagecolorallocate to get the color reference and pass that to imagecolortransparent:

    $black = imagecolorallocate($im, 0, 0, 0);
    imagecolortransparent($img, $black);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 vhdl+MODELSIM
  • ¥20 simulink中怎么使用solve函数?
  • ¥30 dspbuilder中使用signalcompiler时报错Error during compilation: Fitter failed,求解决办法
  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题