PHP GD,全彩JPG透明PNG ontop

PHP GD,全彩JPG透明PNG ontop,php,gd,Php,Gd,我正试图创建一个自定义的旗帜头像的网站。下图显示了需要执行的操作: 如你所见,我有一个半透明的PNG,一个用户提供的图像,我想制作第三个图像 到目前为止,我编写的代码是: $user_id = 1; $name_qry = mysql_query("SELECT a.*, b.* FROM mbr_user_name a, mbr_user_information b WHERE a.user_id = '$user_id' AND b.user_id = '$user_id'");

我正试图创建一个自定义的旗帜头像的网站。下图显示了需要执行的操作:

如你所见,我有一个半透明的PNG,一个用户提供的图像,我想制作第三个图像

到目前为止,我编写的代码是:

$user_id = 1;   
$name_qry = mysql_query("SELECT a.*, b.* FROM mbr_user_name a, mbr_user_information b WHERE a.user_id = '$user_id' AND b.user_id = '$user_id'");
    while($row = mysql_fetch_array($name_qry)){

    $user_name = $row['user_name'];
    $user_email = $row['user_email'];
    $user_avatar = $row['user_avatar'];
    }

    $height = "208";
    $width = "199";
    $top_image = "../images/bannerShadow_cccccb.png";
    $image = imagecreatefrompng("." . $user_avatar);
    $banner = imagecreatefrompng($top_image);

        //Keeping the Banner Trasnparent
        $transBanner = imagecreate($width, $height);
        $color = imagecolorallocatealpha($transBanner, 0, 0, 0, 127);
        imagefill($transBanner, 0, 0, $color);
        imagecopyresampled($transBanner, $banner, 0, 0, 0, 0, $width, $height, $width, $height);


    imagealphablending($transBanner, true);
    imagecopymerge($image, $transBanner, 0, 0, 0, 0, 199, 208, 100);



    imagepng($image);
它的输出如下所示:

显然,我仍然需要将用户提供的图像设置为正确的大小,这是一个简单的数学问题-现在,我必须使透明度保持透明

如果我取出:

imagealphablending($transBanner, true);
imagecopymerge($image, $transBanner, 0, 0, 0, 0, 199, 208, 100);
并将最后一行更改为
imagepng($transBanner),透明的png将保持透明!,但一旦我尝试将两者结合在一起,它会使透明度成为完美的黑色


有什么建议吗?

我不久前也做了类似的事情。在那里,我使用了真彩色图像。只需创建一个新图像,并将每个图像的大小调整版本(化身和覆盖)复制到其中:


我想它已经有了,无论是
合并
还是
屏蔽
,请看演示:-您也可以用它调整大小。不过谢谢您-我已经可以在上面添加水印了。wideimage正在做的是,拍摄一张100%不透明的图像,然后用50%不透明的图像做我正在做的事情。另外,我需要为我在这个网站上的每个用户都这样做。你可以用wideimage和许多参数来配置它。你可以做一次或多次。我会深入挖掘,谢谢!
<?php
$imgOverlay = imagecreatefrompng('overlay.png');
$imgAvatar = imagecreatefrompng('avatar.png');

$width = imagesx($imgOverlay);
$height = imagesy($imgOverlay);

$imgBanner = imagecreatetruecolor($width, $height);
imagecopyresampled($imgBanner, $imgAvatar, 0, 0, 0, 0, $width, $height, imagesx($imgAvatar), imagesy($imgAvatar));
imagecopyresampled($imgBanner, $imgOverlay, 0, 0, 0, 0, $width, $height, $width, $height);

header('Content-type: image/png');
imagepng($imgBanner);