5
我有两个PNG文件,“red.png”和“blue.png”;它们都是透明的,但在不同的地方有几个像素的红色或蓝色斑点。PHP + GD:imagecopymerge不保留PNG透明胶片
我想做一个PHP脚本来合并这两个;它应该像这样简单:
$original = getPNG('red.png');
$overlay = getPNG('blue.png');
imagecopymerge($original, $overlay, 0,0, 0,0, imagesx($original), imagesy($original), 100);
header('Content-Type: image/png');
imagepng($original);
当我运行这个脚本时,我得到的只是蓝色的点 - 透明度丢失了。我看到我应该添加下列内容:
imagealphablending($original, false);
imagesavealpha($original, true);
(在原始和覆盖?上)这似乎没有任何帮助。
我看见有几个解决方法上PHP.net,东西的调子:
$throwAway = imagecreatefrompng($filename);
imagealphablending($throwAway, false);
imagesavealpha($throwAway, true);
$dstImage = imagecreatetruecolor(imagesx($throwAway), imagesy($throwAway));
imagecopyresampled($dstImage, $throwAway,0,0,0,0, imagesx($throwAway), imagesy($throwAway), imagesx($throwAway), imagesy($throwAway));
,这应该PNG转换为“真彩色”图像并保留透明度。它似乎这样做,但现在我看到的只是黑色背景上的蓝色。
我该怎么办?
完全合作。非常感谢!我仍然必须使用imagealphablending和imagesavealpha。 – 2010-07-28 19:38:29