我正在构建一个产品配置模块,该模块需要将多个相同大小的透明 PNG(代表产品部件)拼合到一个图像上。
起初我尝试了这个,它合成了 3 张图像,但在黑色背景上:
<?php
$x = 500;
$y = 500;
$final_img = imagecreatetruecolor($x, $y);
$images = array('1.png', '2.png', '3.png');
foreach ($images as $image) {
$image_layer = imagecreatefrompng($image);
imagecopy($final_img, $image_layer, 0, 0, 0, 0, $x, $y);
}
imagealphablending($final_img, true);
imagesavealpha($final_img, true);
header('Content-Type: image/png');
imagepng($final_img);
?>
然后我发现这个功能可以修复黑色背景问题并给我一个透明的,但现在只显示添加到合成中的最后一张图像。
<?php
$x = 500;
$y = 500;
function imageCreateTransparent($x, $y) {
$image = imagecreatetruecolor($x, $y);
imagealphablending($image, false);
imagesavealpha($image, true);
$col = imagecolorallocatealpha($image,255,255,255,127);
imagefill($image, 0, 0, $col);
return $image;
}
$final_img = imageCreateTransparent($x, $y);
$images = array('1.png', '2.png', '3.png');
foreach ($images as $image) {
$image_layer = imagecreatefrompng($image);
imagecopy($final_img, $image_layer, 0, 0, 0, 0, $x, $y);
}
imagealphablending($final_img, true);
imagesavealpha($final_img, true);
header('Content-Type: image/png');
imagepng($final_img);
?>
如何获得透明背景并显示合并在一起的所有 3 张图像。
谢谢