是否可以通过imagettftext和imagecolortransparent获得真正的透明度?

时间:2011-11-10 00:55:03

标签: php gd

当使用imagettftext并通过imagecolortransparent渲染透明图像时,文本的边框似乎与原始背景颜色(黑色)混合而不是透明度,从而创建如下所示的文本轮廓:
http://i.stack.imgur.com/xLSkK.png而不是使用imagestring,这里:
http://i.imgur.com/5R0gT.png

现在我不确定是否有更好的方法来组合图像,因此它们从一开始就是透明的,或者如果还有其他一些我不知道的透明方法。这是我正在使用的相关PHP代码:

if ($type) {
  $icon = imagecreatefrompng("images/" . $type . ".png");
}
else {
  die('Invalid type.  Valid types are: arcane, elysian, divine, spectral');
}
$img = imagecreatetruecolor(128, 25);
$black = imagecolorallocate($img, 0, 0, 0);
imagecolortransparent($img, $black);
imagecopymerge($img,$icon,0,0,0,0,28,25,100);

imagettftext( $img, 16, 0, 30, 20, $col, $font, $input_num );

header( "Content-type: image/png" );
imagepng( $img );

1 个答案:

答案 0 :(得分:1)

由于抗锯齿,

imagecolortransparent将无法正常工作---轮廓附近的背景颜色不是真正的黑色。你最好的选择是首先使用透明区域的PNG图像而不是黑色背景的图像。