2

我正在使用此代码创建带有透明背景的文本的图像。

 <?php
 // Set the content-type
 header('Content-Type: image/gif');

 // Create the image
 $im = imagecreatetruecolor(400, 150);

 // Create some colors

 $black = imagecolorallocate($im, 0, 0, 0);
 $acolor = imagecolorallocate($im, 153, 204, 153);
 imagecolortransparent($im, $black);

 // The text to draw
 $text = 'Testing...';
 // Replace path by your own font path
 $font = 'arial.ttf';

 // Add the text
 imagettftext($im, 50, 0, 10, 100, $acolor, $font, $text);

 // Using imagegif()
 imagegif($im,"img.gif");
 imagedestroy($im);
 ?>

但是用 img.gif 编写的文本在字母('e,s,n,g')的边界上有一些不需要的颜色(黑色)。我怎样才能完成那种颜色。生成
的图像是 arial 字体下载站点是http://code.google.com/p/ireader/downloads/detail?name=arial.ttf

4

1 回答 1

2

GIF 格式无法处理 Alpha 透明度。它只能有 100% 透明(= 不可见)或 100% 不透明(= 可见)像素。

您的文本似乎具有抗锯齿、柔和的边缘。

这些边缘不是 100% 透明的,但它们也不是 100% 不透明的——它们是前景和背景的混合。这使它们看起来更柔软。

因为 GIF 格式无法处理这些细微差别,所以该库使用绿色和黑色的混合来模拟“较弱”的绿色。

如果您使用 PNG 格式,问题应该会消失:PNG 支持 alpha 透明度。如果您仍需要支持 IE6,则需要研究一些问题,但对于其他所有浏览器,这将立即正常工作。

于 2011-12-10T17:42:10.717 回答