透明背景图像中的字母边框是不需要的?
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 解决了这个问题,谢谢。以上是关于透明背景图像中的字母边框是不需要的?的主要内容,如果未能解决你的问题,请参考以下文章