PHP GD图像没有合并

时间:2016-10-21 12:51:37

标签: php merge gd

我目前正在从base64 png创建一个图像,然后将另一个png合并到它上面。我的代码如下所示,但temp.png只是空的,即使$ fileName的输出仍然是原始图像。:

session_start();

$email = $_SESSION['email'];
$img = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$fileData = base64_decode($img);
$fileName = "./gallery/" . bin2hex(openssl_random_pseudo_bytes(16)) . ".png";
file_put_contents($fileName, $fileData);

//Merge Two Images
header ("Content-type: image/png");
$background = imagecreatefrompng($fileName);
$pkt = imagecreatefrompng("./frames/frame1.png");
$insert_x = imagesx($pkt);
$insert_y = imagesy($pkt);
imagecopymerge($background,$pkt,0,0,0,0,$insert_x,$insert_y,100);
imagepng($background,"temp.png",100);

2 个答案:

答案 0 :(得分:0)

您指定的copyMerge()百分比为100;这不是真正的合并,如果图像大小相等,那只是复制。您应该只看到frame1中的图片。

如果您依赖于Alpha通道,请使用例如pnginfo实用程序验证两个图像都具有有效的alpha分量。

答案 1 :(得分:0)

感谢Iserni指出它不是合并。我写了一个小函数如下:

Choice

希望这有助于某人!