我正在尝试使用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);
如何获得所需(半透明)的结果?
答案 0 :(得分:2)
在合并之前,您需要针对导入的PNG($ sim)调用imagesavealpha()
,以及最终图像。
答案 1 :(得分:0)
你要找的不是透明度而是alpha。 Alpha是另一种颜色通道,它与红色,绿色和蓝色一起确定透明度级别(只是透明是可见的或不是可见的,而不是能够设置透明度级别)。查看imagecolorallocatealpha