PHP合并两个图像会产生粉红色

时间:2015-02-10 05:55:13

标签: php image

我正在尝试使用以下PHP代码合并两个图像:

$image1=imagecreatefrompng($url1);
$image2=imagecreatefrompng($url2);
$final = imagecreatetruecolor($w, $h);
$backgroundColor = imagecolorallocate($final, 255, 255, 255);
imagefill($final, 0, 0, $backgroundColor);
imagecopy($final, $image1, 0,0,0,0,$w,$h);
imagecopy($final, $image2, 0,0,0,0,$w,$h);

合并后,我在生成的图像上得到一个粉红色的阴影。请帮忙。我该如何解决?

原始图片:

Original image 1 Original image 2

产生的合并图像:

Resulting image

2 个答案:

答案 0 :(得分:4)

您的目标图片是GIF,仅限于256色调色板。尝试以JPG或PNG导出,您可能会获得更好的色彩保真度。

答案 1 :(得分:2)

我已使用您的图片链接尝试了您的代码 并且它运作良好并产生适当的png 供您参考

$url1 = 'http://i.stack.imgur.com/kDYTM.png';
$url2 ='http://i.stack.imgur.com/MKTcb.png';
$image1=imagecreatefrompng($url1);
$image2=imagecreatefrompng($url2);
$final = imagecreatetruecolor(275, 275);
$backgroundColor = imagecolorallocate($final, 255, 255, 255);
imagefill($final, 0, 0, $backgroundColor);
imagecopy($final, $image1, 0,0,0,0,275,275);
imagecopy($final, $image2, 0,0,0,0,275,275);
header('Content-type:image/png');
imagepng($final);

对于gif图像,您可以用

替换最后两行
header('Content-type:image/gif');
imagegif($final);