2011-06-03 110 views
0

我试过其他的解决方案,但它没有奏效,所以我粘贴在这里我的代码,可以复制,但不能用透明度保存它[透明部分变白]!合并透明PNG图像与其他PNG图像 - PHP

<?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

我也试图与** imagealphablending($ SRC,FALSE); ** – Sourav 2011-06-03 13:56:33

回答

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);