首页 > 解决方案 > 合并图像导致背景中出现黑色伪影

问题描述

对 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">

这是我得到的输出。 在此处输入图像描述

源图像:

在此处输入图像描述在此处输入图像描述

标签: phpgd

解决方案


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

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

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

在此处输入图像描述


推荐阅读