朋友我想从多个透明PNG图像生成一个png图像,但问题是我只能生成最后一张图像
两张图片无法合并。
我的代码如下:
$x = 363;
$y = 267;
$im_dest = imagecreatetruecolor ($x, $y);
imagealphablending($im_dest, false);
$im = imagecreatefrompng('2.png');
$im1 = imagecreatefrompng('1.png');
imagecopy($im_dest, $im1, 0, 0, 0, 0, $x, $y);
imagecopy($im_dest, $im, 0, 0, 0, 0, $x, $y);
imagesavealpha($im_dest, true);
imagepng($im_dest, 'small_redfade.png');
这些是我用来加入单张图片的图片
答案 0 :(得分:2)
这是有效的代码:
$width = 210;
$height = 190;
$layers = array();
$layers[] = imagecreatefrompng("img/01_boy_faceB.png");
$layers[] = imagecreatefrompng("img/01_boy_hairB.png");
$image = imagecreatetruecolor($width, $height);
// to make background transparent
imagealphablending($image, false);
$transparency = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparency);
imagesavealpha($image, true);
/* if you want to set background color
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
*/
imagealphablending($image, true);
for ($i = 0; $i < count($layers); $i++) {
imagecopy($image, $layers[$i], 0, 0, 0, 0, $width, $height);
}
imagealphablending($image, false);
imagesavealpha($image, true);
imagepng($image, 'final_img.png');
?>
答案 1 :(得分:1)
ImageMagick::Composite可以解决这个问题,遗憾的是没有在GD中完成,所以会让别人解释如何在那里做。
类似的东西:
<?php
$firstImage = new Imagick("firstImage.png");
$secondImage = new Imagick("secondImage.png");
$firstImage->compositeImage($secondImage, Imagick::COMPOSITE_COPYOPACITY, 0, 0 );
header('Content-type: image/png');
echo $firstImage;
?>
这应保留alpha。