PHPカットサムネイルによるpng,gif透明図生成時の黒色背景問題の解決

786 ワード

最近ではプロフィールアップにカットを使っていますが、GIFやPNGが透明であれば、カット後は黒い背景図になります.
 
ソリューションは2種類あります.
 
1.背景図は白い背景を塗りつぶします.
 
$white = imagecolorallocate($dstim,255,255,255);
imagefilledrectangle($dstim,0,0,$width,$height,$white);
imagecolortransparent($dstim,$white);

 
2.画像の透明な通路を設定します.
 
$img = imagecreatefrompng($src);
imagesavealpha($img,true);//     ;
$thumb = imagecreatetruecolor(300,300);
imagealphablending($thumb,false);//     ,        ,   $img      ,     ;
imagesavealpha($thumb,true);//     ,       $thumb      ;
imagecopyresampled($thumb,$img,0,0,0,0,300,300,300,300);
imagepng($thumb,"temp.png");

 
以上の2つの方式はいずれもテストに成功した.