繁体   English   中英

PHP GD图像没有合并

[英]PHP GD images not merging

我正在从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);

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

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

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

function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct)
{
    $cut = imagecreatetruecolor($src_w, $src_h); 

    imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h);
    imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h);
    imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct); 
}

希望这有助于某人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM