PHP imagettftext() - 什么都没有显示

时间:2013-06-08 02:58:32

标签: php gd

尝试使用GD库显示字体。那里确实有一个图像,只是没有任何显示。

PHP:

header('Content-Type: image/png');

$font = $_GET['font'];

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

// Create some colors
$white = imagecolorallocate($image, 255, 255, 255);
$grey = imagecolorallocate($image, 128, 128, 128);
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, 399, 29, $white);

// The text to draw
$text = 'The Quick Brown Fox Jumps over the Lazy Dog';
$font = '/Aller/' . $font;


// Add the text
imagettftext($image, 20, 0, 10, 20, $black, $font, $text);

imagepng($image);

HTML:

<img src="fontgen.php?font=Aller_Rg.ttf" alt="" />

字体位于fonts / Aller / Aller_Rg.tff

我做错了什么?

2 个答案:

答案 0 :(得分:0)

除了这部分

之外,代码都是正确的
$font = '/Aller/' . $font;

它尝试绝对路径'/Aller/Aller_Rg.tff'而不是'Aller / Aller_Rg.tff'

将其更改为$font = 'Aller/' . $font;应该有效。

另外,您应该检查错误日志,它应该提到Invalid font filename

如有疑问,请删除header('Content-Type: image/png');进行调试。

答案 1 :(得分:0)

问题似乎是$font变量。来自文档:

  

根据PHP使用的GD库版本,当fontfile不以前导/开头时,然后.ttf将附加到文件名,库将尝试沿库定义的字体路径搜索该文件名

     

当使用低于2.0.18的GD库版本时,空格字符而不是分号用作不同字体文件的“路径分隔符”。无意中使用此功能将导致警告消息:警告:找不到/打开字体。对于这些受影响的版本,唯一的解决方案是将字体移动到不包含空格的路径。

     

在许多情况下,字体与使用它的脚本位于同一目录中,以下技巧将缓解任何包含问题。

<?php
// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font = 'SomeFont';
?>

您还说该字体位于fonts/Aller/目录中。然而,在您的脚本中,没有对fonts目录的引用。