Reputation: 22859
I have a PNG and I'm trying to merge it on top of a JPG. With the following code
$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);
Results in the following
I also tried a suggestion from a similar question which said to use 'imagecopyresampled' isntead of 'imagecopymerge' but when I did that the santa hat didn't show up at all.
What do I need to change to make the santa hat keep it's transparency when merged?
Upvotes: 5
Views: 7422
Reputation: 22859
Solution required both using 'imagecopyresampled'. As well a removing lines 4 and 5 from the posted source code.
imagealphablending($dest, false);
imagesavealpha($dest, true);
Here is the complete working version
$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);
Upvotes: 11