让我们假设我想要创建一个脸生成器,在这里,我将设计几张脸的形状,耳朵,鼻子,嘴,头发的图片。考虑到这些图片的组合,我如何在PHP中创建一个新图片?例如,一个简化的版本:
有face1.png,face2.png,nose1.png和nose2.png。我如何以编程方式将face1.png与nose2.png合并,以便结果图片能够保存这两张图片的内容?
发布于 2015-12-26 19:39:44
有一个函数名为影像机。此函数使用源映像覆盖目标映像的一部分。给定的部分指定为参数。在您告诉我这不能解决您的问题之前,我必须补充,如果像素是透明的,目标图像中的像素不会被源图像的像素覆盖。您需要在源图片上使用成象共混和图像遮挡,如下所示:
public static function experimental($images, $width, $height, $dest = null) {
$index = 0;
if ($dest === null) {
$dest = $images[$index++];
}
while ($index < count($images)) {
imagealphablending($images[$index], true);
imagesavealpha($images[$index], true );
imagecopy($dest, $images[$index++], 0, 0, 0, 0, $width, $height);
}
return $dest;
}如果我们有这两张照片:


其结果将是:

发布于 2015-12-25 21:25:17
基本上有三种选择: GD、开罗或ImageMagic。如果有可用的话,我建议使用Imagick类。如果不是,ImageMagick通过PHP调用。如果没有,GD可能就足够了。
这取决于您的服务器配置,其中哪些是可用的,哪些需要安装额外的包。
在组合图像的Imagick文档中有一个非常简单的示例:https://secure.php.net/manual/en/imagick.compositeimage.php
我还找到了GD:将两个PNG图像与PHP库合并的示例
发布于 2015-12-25 21:17:54
你真的想用PHP来做吗?好的。
1)可以使用GD库进行图像处理。2)您可以使用图像PHP包装器-- i魔术。
但我认为你应该在客户端使用画布。为了保存结果,您可以将画布(或分离的层/图片)的base64 png图像表示发送到后端。
https://stackoverflow.com/questions/34466434
复制相似问题