合并图像导致背景出现黑色伪影

Merging image causing black artefact in background

对 php 很陌生,我正在尝试使用 GD 将两个图像合并在一起。

我试过这样做,但是它导致合并后的图像有一个奇怪的黑色背景。

有人知道我哪里错了吗?

    <?php
        $image_1 = imagecreatefrompng('image.png');
        $overlay = imagecreatefrompng('image2.png');
        $size = getimagesize('image2.png');

        imagecopy($image_1, $overlay, 0, 0, 0, 0, $size[0], $size[1]);
        imagepng($image_1, "mergedImage.png");
    ?>
    <img src="image.png"/>
    <img src="image2.png"/>
    <img src="mergedImage.png">

这是我得到的输出。

源图片:

告诉 GD 在创建目标图像后立即保留 alpha 通道信息应该可以解决问题:

<?php
$image_1 = imagecreatefrompng('image.png');
imagesavealpha($image_1, true);
$overlay = ...

目前您得到了 image2.png 的副本,但我假设您想要获得不同的结果: