1
我正在尝试为网站创建自定义横幅头像。下图显示了需要采取什么措施:PHP GD,全彩色透明PNG ontop JPG
正如你所看到的,我有一个半透明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](http://wideimage.sourceforge.net/)已经有了这个,无论是'merge'还是'mask',都可以看到这个demo:http://wideimage.sourceforge.net/wp-content /current/demo/index.php?demo=merge&output=preset%20for%20demo&colors=255&dither=1&match_palette=1 - 您也可以使用它调整大小。 – hakre
谢谢,虽然 - 我已经可以在它上面加水印了。宽幅图像在做什么,是采取100%不透明的图像,然后做我正在做的50%不透明度。另外,我需要为我在本网站上拥有的每个用户执行此操作。 – ntgCleaner
您可以使用wideimage和许多参数进行配置。你可以做一次或者多次。 – hakre