我想把一个jpeg放在一个PNG - 其中PNG有alpha透明度。PHP合并与alpha透明png顶部的jpeg
的前景图像是在这里: http://peugeot208.srv.good-morning.no/images/marker-shadow.png
的形象背后,是一个Facebook的个人资料图片 - 通常是这样的: https://graph.facebook.com/100000515495823/picture
结果图像失去透明度,是黑色的,而不是: http://peugeot208.srv.good-morning.no/libraries/cache/test.png
这是我使用的代码:
// combine image with shadow
$newCanvas = imagecreatetruecolor(90,135);
$shadow = imagecreatefrompng("marker-shadow.png");
//imagealphablending($newCanvas, false);
imagesavealpha($newCanvas, true);
imagecopy($newCanvas, $canvas, 20, 23, 0, 0, 50, 50);
imagecopy($newCanvas, $shadow, 0, 0, 0, 0, 90, 135);
imagepng($newCanvas, $tempfile, floor($quality * 0.09));
如果我启用imagealphablending($ newCanvas,false),结果是正确的(标记中间的洞是透明的),但后面的图像消失了。
你能阐明一下吗? :-)
谢谢!
编辑:找到一个解决办法
我做了一些摆弄,结束了这段代码 - 在原产地是不是createimagetruecolor但是从模板创建的图像 - 这是一个透明的PNG。
现在它的工作原理 - 结果是正确透明的。我不知道为什么。有一个想法,为什么?
fbimage.php
// Create markerIcon
$src = $_REQUEST['fbid'];
$base_image = imagecreatefrompng("../images/marker-template.png");
$photo = imagecreatefromjpeg("https://graph.facebook.com/".$src."/picture");
$top_image = imagecreatefrompng("../images/marker-shadow.png");
imagesavealpha($base_image, true);
imagealphablending($base_image, true);
imagecopy($base_image, $photo, 20, 23, 0, 0, 50, 50);
imagecopy($base_image, $top_image, 0, 0, 0, 0, 90, 135);
imagepng($base_image, "./cache/".$src.".png");
?>
<img src="./cache/<?php echo $src ?>.png" />
更新:请检查下面的代码 你可以在这里找到结果:http://peugeot208.srv.good-morning.no/images/marker.php 正如你所看到的,背景仍然是黑色的。
// create base image
$base_image = imagecreatetruecolor(90,135);
$photo = imagecreatefromjpeg("marker-original.jpg");
$top_image = imagecreatefrompng("marker-shadow.png");
imagesavealpha($top_image, true);
imagealphablending($top_image, true);
imagesavealpha($base_image, true);
imagealphablending($base_image, true);
// merge images
imagecopy($base_image, $photo, 20, 23, 0, 0, 50, 50);
imagecopy($base_image, $top_image, 0, 0, 0, 0, 90, 135);
// return file
header('Content-Type: image/png');
imagepng($base_image);
确保您已在$ canvas图片上启用了alpha。 – 2012-03-23 15:16:44
Halfer。我不是故意讽刺的:-)但是我确实需要一些方向来解决我以前的问题。我总共提出了6个问题。一个没有答案。删除。拿这个问题:806133.最合理的答案是我自己的 - 但它是一种解决方法。我应该接受我自己的答案吗?或者别人没有足够的答案? – nitech 2012-03-26 06:54:41