5

PNGを持っていて、JPGの上にマージしようとしています。次のコードで

$dest = imagecreatefromjpeg("example.jpg");
$src = imagecreatefrompng("example.png");

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

imagealphablending($src, true);

imagecopymerge($dest, $src, $src2x, $src2y, 0, 0, $src2w, $src2h, 100);

header('Content-Type: image/png');
imagepng($dest, "user/".$imei."/".$picCount."_m");

imagedestroy($dest);
imagedestroy($src);

次の結果になります

ここに画像の説明を入力してください

同様の質問から、 「imagecopymerge」の代わりに「imagecopyresampled」を使用するという提案も試しましたが、それを実行すると、サンタの帽子がまったく表示されませんでした。

サンタの帽子をマージしたときに透明度を維持するには、何を変更する必要がありますか?

4

1 に答える 1

11

'imagecopyresampled'を使用する両方のソリューションが必要です。また、投稿されたソースコードから4行目と5行目を削除します。

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

これが完全な作業バージョンです

$dest = imagecreatefromjpeg("example.jpg");
$src = imagecreatefrompng("example.png");

imagecopyresampled($dest, $src, $src2x, $src2y, 0, 0, $src2w, $src2h, $src2w, $src2h); 

header('Content-Type: image/png');
imagejpeg($dest, "user/".$imei."/".$picCount."_m.jpeg");

imagedestroy($dest);
imagedestroy($src);

ここに画像の説明を入力してください

于 2013-02-23T21:19:29.450 に答える