合并图像导致背景出现黑色伪影
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
的副本,但我假设您想要获得不同的结果:
对 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
的副本,但我假设您想要获得不同的结果: