在PHP中将PNG放在JPG上方

21

我希望用PHP实现以下功能:

我有两张图片,一张是jpg格式,另一张是png格式。我想将jpg格式的图片调整为与png格式相同的大小,然后将png放在其上方。由于PNG具有透明度,因此希望保留透明度,以便jpg显示在其下面。

如果有人能提供帮助,那就太好了!

谢谢!


1
请查看 PHP 的 GD(或 GD2)库。 - Moshe
我想在WooCommerce中实现这个,有人可以指导吗? - VedantK
这不是重复,而是另一种方法。 - SaidbakR
3个回答

53
<?
$png = imagecreatefrompng('./mark.png');
$jpeg = imagecreatefromjpeg('./image.jpg');

list($width, $height) = getimagesize('./image.jpg');
list($newwidth, $newheight) = getimagesize('./mark.png');
$out = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($out, $jpeg, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
imagecopyresampled($out, $png, 0, 0, 0, 0, $newwidth, $newheight, $newwidth, $newheight);
imagejpeg($out, 'out.jpg', 100);
?>

1
非常感谢!我已经卡在相似的合并问题上三天了,没有任何想法(忘记了之前所知道的一切)...你救了我的灵魂!非常感谢!愿上帝保佑你! - Paul T. Rawkeen
代码不起作用。它显示了找不到图像的图标。 - Anupal
很棒的答案,解决方案运行良好。 - Lloyd Erasmus

7
这是我正在使用的可工作代码。
$dest = imagecreatefrompng('mapCanvas.png');
$src = imagecreatefromjpeg('si.jpg');
imagealphablending($dest, false);
imagesavealpha($dest, true);
// Copy and merge
imagecopymerge($dest, $src, 17, 13, 0, 0, 60, 100, 100);

// Output and free from memory
header('Content-Type: image/png');
imagepng($dest);

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

谢谢,它完美地工作了,但输出图像只有n种颜色,也就是说它输出的是黑白图像。现在该怎么办呢? - Deepak Chawla

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接