使用php.net的例子,我得到一个警告,图像不能正确呈现。 我提供了.ttf文件的完整path,如下所示: /var/www/public/myfont.ttf
PHP Warning: imagettftext() [<a href='function.imagettftext'>function.imagettftext</a>]: Could not find/open font in <phpfile>
我在这里find一个自定义的.ttf字体。 我可以在Ubuntu中打开文件,作为有效的字体文件。 我也尝试了其他字体,结果相同。
我使用Ubuntu 10.04 LTS 32位,安装了apache2,php5,freetype6和php5-gd。 我也试图用ttf文件chmod 777文件和文件夹,结果相同。
我怎样才能得到使用自定义的ttf字体文件工作的例子?
*编辑:我正在使用的代码:
<?php // File is: /var/www/public/test.php // Apart from $font variable, it's copy-pasted from php.net // Set the content-type header('Content-Type: image/png'); // Create the image $im = imagecreatetruecolor(400, 30); // Create some colors $white = imagecolorallocate($im, 255, 255, 255); $grey = imagecolorallocate($im, 128, 128, 128); $black = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 399, 29, $white); // The text to draw $text = 'Testing...'; // Replace path by your own font path $font = '/var/www/public/UnmaskedBB.ttf'; // Add some shadow to the text imagettftext($im, 20, 0, 11, 21, $grey, $font, $text); // Add the text imagettftext($im, 20, 0, 10, 20, $black, $font, $text); // Using imagepng() results in clearer text compared with imagejpeg() imagepng($im); imagedestroy($im); ?>
从phpinfo()输出;
[gd] GD Support enabled GD Version 2.0 FreeType Support enabled FreeType Linkage with freetype FreeType Version 2.3.11 T1Lib Support enabled GIF Read Support enabled GIF Create Support enabled JPEG Support enabled libJPEG Version 6b PNG Support enabled libPNG Version 1.2.42 WBMP Support enabled
testingis_file
和is_readable
:
$font = realpath('./').'/UnmaskedBB.ttf'; echo "Font: ".$font; // /var/www/public/UnmaskedBB.ttf echo "Is file? ".is_file($font); // 1 echo "Is readable? ".is_readable($font); // 1
你可以尝试插入:
putenv('GDFONTPATH=' . realpath('.'));
在第一个imagettftext
前面,只是为了确保它没有路径问题。
UPDATE
如果你正在使用像fc-cache
这样的字体缓存,不要忘了刷新它,例如:
sudo fc-cache -f -v
尝试移动与您的PHP文件相同的目录中的ttf文件,并更改$字体
$font = 'UnmaskedBB.ttf';
升级发行版,包括所有的PHP软件包解决了这个问题