这是一个我无法使其发挥作用的简单例子。
我使用不同坐标的点创建2个2x2px的简单图像,然后尝试使用imagecopy合并它。第二个图像($ stamp)使用透明背景正确创建。 结果,我希望在结果图像(result.png)中看到两个白点,但事实并非如此。
我尝试了几种没有结果的功能组合。
我在这里缺少什么?
<?php
// create source image
$src = imagecreatetruecolor(2, 2);
$white = imagecolorallocate($src, 255, 255, 255);
$black = imagecolorallocate($src, 0, 0, 0);
imagesetpixel($src, 0, 0, $white);
imagepng($src, 'src.png');
// create stamp image
$stamp = imagecreatetruecolor(2, 2);
imagecolortransparent($stamp, $black);
imagesetpixel($stamp, 1, 1, $white);
imagepng($stamp, 'stamp.png');
imagedestroy($src);
imagedestroy($stamp);
// merging images
$src = imagecreatefrompng('src.png');
$stamp = imagecreatefrompng('stamp.png');
imagealphablending($src, true);
imagesavealpha($src, true);
imagecopy($src, $stamp, 0, 0, 0, 0, 2, 2);
imagepng($src, 'result.png');
imagedestroy($src);
答案 0 :(得分:1)
尝试这样的事情。
// create stamp image
$stamp = imagecreatetruecolor(2, 2);
imagesavealpha($stamp, true);
$transparent_colour = imagecolorallocatealpha($stamp, 0, 0, 0, 127);
imagefill($stamp, 0, 0, $transparent_colour);
$white = imagecolorallocate($stamp, 255, 255, 255);
imagesetpixel($stamp, 1, 1, $white);
imagepng($stamp, 'stamp.png');
唯一的区别是你在创建图章和src图像时使用imagesavealpha来允许透明度,然后使用imagecolorallocatealpha填充透明色。
之后,像以前一样将白色像素添加到一个,将黑色像素添加到另一个像素。然后结合它们。