PHP 對一張透明底圖的 png 圖片,想要將透明底圖加上顏色(移除透明底圖),要怎麼做呢?
- 註:想要將兩張圖片合併在一起,遇到透明底圖的時候,合成起來透明底圖會變黑底
PHP 將 png 透明底圖改成白色
想要將透明底圖改成白色,先紀錄找失敗的案例,使用下述:
- imagealphablending($image_new, false);
- imagesavealpha($image_new, true);
上述也會將透明的部份變成白色,不過白色的顏色是有點怪的(不是純白),所以後來想說乾脆在背景先弄一張白色的底圖,再把 png 圖片放上去,再合併在一起即可,使用下述:
- imagefilledrectangle($image_new, 0, 0, 300, 300, imagecolorallocate($image_new, 255, 255, 255));
下述為範例程式,圖片大小為 300x300
<?php $image = imagecreatefrompng('example.png'); $image_new = imagecreatetruecolor(300, 300); imagefilledrectangle($image_new, 0, 0, 300, 300, imagecolorallocate($image_new, 255, 255, 255)); // 設定底色白色 imagecopyresampled($image_new, $image, 0, 0, 0, 0, 300, 300, 300, 300); header('Content-Type: image/png'); imagepng($image_new); ?>