透明背景图像中的字母边框是不需要的?

Posted

技术标签:

【中文标题】透明背景图像中的字母边框是不需要的?【英文标题】:Alphabet border in transparent background image is unwanted? 【发布时间】:2011-10-14 16:49:57 【问题描述】:

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

 <?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

【问题讨论】:

不完全清楚你的意思:你能提供一个示例图形来演示这个问题吗?另外,我不确定您要在这里做什么,但是如果您使用这些图形在您的网站上显示文本,则可能完全不使用图形而使用 html/CSS 更好地实现它。但这取决于你想要做什么。 @Spudley 此代码输出此图像,其中imageshack.us/photo/my-images/851/imgsi.png 以字母“e”、“s”、“n”和“g”写为“测试”,边框上几乎没有黑色,所以我没有想要那个边框 关于我的第二点:如果您所做的只是创建图形以便您可以使用不寻常字体的文本,那么您可以使用纯 HTML/CSS 来执行此操作,即使使用特殊字体,使用 CSS @ 987654327@。适用于所有浏览器。请参阅randsco.com/index.php/2009/07/04/p680 和paulirish.com/2009/bulletproof-font-face-implementation-syntax 了解更多信息。 @Spudley 感谢您的链接,但我可能不得不在项目中使用图像但还不确定。谢谢 【参考方案1】:

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

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

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

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

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

【讨论】:

你说得对,我两天前使用 png 解决了这个问题,谢谢。

以上是关于透明背景图像中的字母边框是不需要的?的主要内容,如果未能解决你的问题,请参考以下文章

花式框和透明背景图像

CSS 内部边框,带有背景图像的div上的不透明度

Qt开源作品18-无边框背景透明窗体

Qt开源作品18-无边框背景透明窗体

C语言API如何让窗口里的部分背景透明?

在 CSS 中制作透明文本并在文本形状内拟合背景图像