2014-01-21 30 views
0

我的一个客户端试图使用imagettftext()将文本放置在背景图像上。代码在以前工作,并突然从显示黑色文本到显示灰色文本。代码已正确设置为黑色,并将其更改为任何其他颜色也没有任何影响。imagettftext()总是灰色,即使用黑色定义

$im  = imagecreatefrompng("/path/to/background.png"); 
$text = imagecolorallocate($im, 0, 0, 0); 
imagettftext($im, 10, 0,96, 201,$text, "vera", $thiscardnumber); 
imagepng($im, "/path/to/new/".$imagefilename.".png"); 
imagedestroy($im); 

任何帮助将不胜感激,因为代码或服务器上没有任何改变,我知道突然停止产生正确的黑色文本。

可以看到这里生成的文本:

image

黑色文本是背景图像的部分,由上面的代码生成的灰色文字。

+0

我能够在一定程度上重新创建你的代码相同的“黑”的文字,并且觉得很奇怪,你得到的灰色文字。看看手册,它可能会有所帮助。我基于自己使用示例#1 http://www.php.net/imagettftext ---另外,尝试使用不同的字体;我使用了'monofont.ttf' ---你的字体可能有不透明的设置,谁知道......陌生的事情发生了。 –

+0

我尝试使用不同的字体,但我只是在不同的字体中获取浅灰色文本=)我搜索了PHP中GD函数的文档中列出的透明设置的任何函数,但找不到任何字体。 – ash3220410

回答

0

编辑:从下面

啊,OK意见。如果你只是单独重新创建几行代码,你还会得到灰色文本吗?因为我用你的代码得到黑色文本。如果你尝试使用不同的字体或不同的基本图像来消除它们作为罪魁祸首呢?您是否验证了$ text的价值?


原来的答案:

这里有什么不对劲。您的“x”和“y”坐标大于背景图像,因此您生成的文本不在图像画布中。

您的背景图像是否已经有灰色文本,并且您正在生成的文本发生在图像之外?

enter image description here

+0

这就是我也在想的。在10,0,96,201中,OP的'201'设置可能在所有这些中扮演着角色。我把它改成了'20',结果很好。也许这是某人的错字。 –

+0

不,不幸的是,这不是问题。如果是这样,这将是一个简单的解决方法=)我使用的图像比屏幕截图大得多,我只用一小段来说明灰色生成文本旁边的黑色背景文字。正在生成文本,并以除颜色之外的其他各种方式正确显示。数据通过表单提交,所以我可以看到文本更新为不同的值传递。它只是在接近不可读的灰色。 – ash3220410

+0

啊,好的。如果你只是单独重新创建几行代码,你还会得到灰色文本吗?因为我用你的代码得到黑色文本。如果你尝试使用不同的字体或不同的基本图像来消除它们作为罪魁祸首呢?您是否验证了$ text的价值? – TunaMaxx