PHPでPNGの画像を上下半分に分割し、間を開けて、下に分割した画像のもう半分を合成する仕組みを作っています。
元となる画像には透過処理がされており背景が透明となっております。
しかし、最終的にimagepngで出力する際、透過情報が保持されず、背景が真っ黒となります。
実装したいこと
加工したPNGを出力する際、元画像の透過情報を維持したまま出力したいのですが、以下のソースをどのように変更すれば実現出来るでしょうか。
または実現は不可能なのでしょうか。
どなたかご教示のほどよろしくお願いします。
$original = imagecreatefrompng('./test.png');//元の画像 $x = imagesx($original); $y = imagesy($original); $resize = imagecreatetruecolor($x, $y+10); $resize1 = imagecreatetruecolor($x, $y+10); //ブレンドモードを無効にする imagealphablending($resize, false); imagealphablending($resize1, false); //完全なアルファチャネル情報を保存するフラグをonにする imagesavealpha($resize, true); imagesavealpha($resize1, true); //画像のコピー(分割)&合成 imagecopymerge($resize1, $original, 0, 0, 0, 0, $x, $y/2,100); imagecopymerge($resize1, $original, 0, $y/2+8, 0, $y/2, $x, $y-($y/2)+10,100); //再サンプリングを行いイメージの一部をコピー、伸縮する imagecopyresampled($resize, $resize1, 0, 0, 0, 0, $x, $y, $x, $y+5); //出力 header('Content-Type: image/png'); imagepng($resize, './output.png'); //破棄 imagedestroy($resize); imagedestroy($resize1);
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。