PHP:使用GD将图像合并为alpha半透明图像

时间:2010-10-14 15:57:30

标签: php image-processing transparency gd

我正在尝试使用GD创建具有不同透明度的图像。但我只能在图像中获得完全透明或完全不透明的像素。

我想得到的:我真正得到的:
http://bx.at.ua/i/se/stackoverflow/target.png http://bx.at.ua/i/se/stackoverflow/actual.png
http://bx.at.ua/i/se/stackoverflow/target-zoom.png http://bx.at.ua/i/se/stackoverflow/actual-zoom.png

这是我用来创建像这样的图像的代码的一段▲固定代码:

$im=imagecreatetruecolor($sx,$sy);
imageantialias($im,true);
imagesavealpha($im,true);

$c00FF00=imagecolorallocate($im,0,255,0);
$cFFFFFF=imagecolorallocate($im,255,255,255); $cFFFFFF_00=imagecolorallocatealpha($im,255,255,255,127); imagecolortransparent($im,$cFFFFFF);

imagefilledrectangle($im,0,0,$sx,$sy, $cFFFFFF $cFFFFFF_00);

$sim=imagecreatefrompng('gradient.png');
imagecopy($im,$sim,$dest_x,$dest_y,0,0,imagesx($sim),imagesy($sim));
imagedestroy($sim);

imagettftext($im,$size,0,$text_x,$text_y,$c00FF00,$font,'Test');

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

如何获得所需(半透明)的结果?

2 个答案:

答案 0 :(得分:2)

在合并之前,您需要针对导入的PNG($ sim)调用imagesavealpha(),以及最终图像。

答案 1 :(得分:0)

你要找的不是透明度而是alpha。 Alpha是另一种颜色通道,它与红色,绿色和蓝色一起确定透明度级别(只是透明是可见的或不是可见的,而不是能够设置透明度级别)。查看imagecolorallocatealpha