我尝试了其他的解决方案,但它没有用,所以我在这里粘贴我的代码,可以复制但不能保存透明度[透明部分变白]!
<?php
$dest = imagecreatefrompng('album.png');
imagealphablending($dest, true);
imagesavealpha($dest, true);
$offset = 10;
$friends = array ('captcha1.png', 'captcha2.png', 'captcha3.png', 'captcha4.png', 'captcha5.png', 'captcha6.png', 'captcha7.png', 'captcha8.png', 'captcha9.png');
$baby = array ('baby1.png', 'baby2.png', 'baby3.png', 'baby4.png');
$ids = getID(0, count($friends)-1, 3);
for ($i=0;$i<3;$i++)
{
$index = $ids[$i];
$src = imagecreatefrompng($friends[$index]);
$offsetY = imagesx($src);
imagecopymerge($dest, $src, 10, $offset, 0, 0, $offsetY, imagesy($src), 100);
$src = imagecreatefrompng($baby[rand(0,3)]);
imagealphablending($src, true);
imagesavealpha($src, true);
imagecopymerge($dest, $src, ($offsetY + 250), $offset, 0, 0, imagesx($src),imagesy($src), 99);
$offset = $offset + imagesx($src) + 45;
}
header('Content-Type: image/png');
imagealphablending($dest, true);
imagesavealpha($dest, true);
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);
function getID($min, $max, $quantity) {
$numbers = range($min, $max);
shuffle($numbers);
return array_slice($numbers, 0, $quantity);
}
?>
答案 0 :(得分:2)
解决方案是使用
imagecopy($dest, $src, ($offsetY + 250), $offset, 0, 0, imagesx($src),imagesy($src));
不是
imagecopymerge($dest, $src, ($offsetY + 250), $offset, 0, 0, imagesx($src),imagesy($src), 99);