我在将多个透明png合并在一起时遇到了一些问题。 我正在尝试创建一个工具,在屏幕上设计一条皮带,供用户使用 他们选择表带,搭扣和设计折痕。
该工具将三个不同的图像合并为一个,以创建一个预览图像。当我运行下面的代码时,它会创建带子图像,正确添加带扣,但带子图像右侧会出现一个黑色框,看起来与带扣图像大小相同。一世 无法确定问题是什么。
这是我第一次使用php处理图像,所以我可能会忽略这一点。如果有人能帮助我,我将非常感激。提前谢谢!
header('Content-type: image/png');
$strap = imagecreatefrompng("images/straps/DBR.png");
$w = imagesx($strap);
$h = imagesy($strap);
imagealphablending($strap,true);
$buckle = imagecreatefrompng("images/buckles/" . $buckle . ".png");
imagealphablending($buckle,true);
$crease = imagecreatefrompng("images/skull.png");
imagealphablending($crease,true);
imagecopy($strap,$buckle,200,0,0,0,$w,$h);
imagecopy($strap,$crease,0,0,0,0,$w,$h);
//imagecopy($photo2,$crease,200,0,0,0,$w,$h);
// fill the image background with white
imagepng($strap);
imagedestroy($strap);
imagedestroy($buckle);
更新:这是我目前的源代码
$strap = imagecreatefrompng("images/straps/DBR.png");
$w = imagesx($strap);
$h = imagesy($strap);
imagealphablending($strap,true);
imagesavealpha($strap, true);
$buckle = imagecreatefrompng("images/buckles/" . $buckle . ".png");
imagealphablending($buckle,false);
imagesavealpha($buckle, true);
$crease = imagecreatefrompng("images/skull.png");
imagealphablending($crease,false);
imagesavealpha($crease, true);
imagecopy($strap,$buckle,200,0,0,0,$w,$h);
imagecopy($strap,$crease,0,0,0,0,$w,$h);
imagepng($strap);
imagedestroy($strap);
imagedestroy($buckle);
答案 0 :(得分:2)
试试这段代码,看看它是否有效:
//call path of all images
//example: $peinado="/images/path/peinado.png";
$image_1 = imagecreatefrompng($peinado);
$image_2 = imagecreatefrompng($cejas);
$image_3 = imagecreatefrompng($ojos);
$image_4 = imagecreatefrompng($nariz);
$image_5 = imagecreatefrompng($boca);
//the frame of the original image
$imgFinal = imagecreatefrompng($src);
//alpha & transparency
imagealphablending($imgFinal, true);
imagesavealpha($imgFinal, true);
//merge all images
imagecopy($imgFinal, $image_1, 0, 0, 0, 0, 259, 429);
imagecopy($imgFinal, $image_2, 0, 0, 0, 0, 259, 429);
imagecopy($imgFinal, $image_3, 0, 0, 0, 0, 259, 429);
imagecopy($imgFinal, $image_4, 0, 0, 0, 0, 259, 429);
imagecopy($imgFinal, $image_5, 0, 0, 0, 0, 259, 429);
//save the png image
imagepng($imgFinal, 'avatars/prueba.png');
答案 1 :(得分:0)
我认为你必须使用imagesavealpha():http://www.php.net/manual/en/function.imagesavealpha.php
信息:“你必须取消设置alphablending(imagealphablending($ im,false)),才能使用它。”