在使用imagettftext()函数生成包含汉字的图片时,在本地测试正常,上传到空间后运行却报如下错误

imagettftext() [function.imagettftext]: Could not find/open font in……

查看官方手册:

When using versions of the GD library lower than 2.0.18, a space character, rather than a semicolon, was used as the ‘path separator’ for different font files. Unintentional use of this feature will result in the warning message: Warning: Could not find/open font. For these affected versions, the only solution is moving the font to a path which does not contain spaces.

说是因为如果GD库的版本过低的话,字体文件的路径中不能包含有空格。

但是我想我空间的GD库不能那么低啊,而且字体文件路径中也没有空格,然后突然想到,linux/unix主机下文件名是区分大小写的,空间内字体文件的名称是SIMFANG.TTF,而我在使用它的时候用的是小写,所以会找不到字体文件,报此错误。

还曾经遇到一个错误是字体乱码的问题,更换了一个字体就好啦。。

下边贴上我的代码吧,把汉字写到一个白色背景的图片上并写成文件t.jpeg,(该文件目录下有字体文件SIMFANG.TTF);供参考。

$content = $_REQUEST['text'];
    $height = 300;
    $width = 300;

    $im = ImageCreateTrueColor($width, $height);
    $white = ImageColorAllocate($im, 255, 255, 255);
    $black = ImageColorAllocate($im, 0, 0, 0);
    ImageFill($im, 0, 0, $white);
    //ImageString($im, 10, 100, 120, $content, $black);
    $font = "SIMFANG.TTF";
    imagettftext($im, 20,0, 50, 150, $black ,$font,$content);

    imagejpeg($im,'t.jpeg');
    ImageDestroy($im);

亲测,正常可用。