imagettftext не удается открыть файл шрифта
С помощью пример из php.net я получаю предупреждение, и изображение не отображается правильно. Я предоставляю полный путь к .ttf файл так:/var/www/public/myfont.ttf
PHP Warning: imagettftext() [<a href='function.imagettftext'>function.imagettftext</a>]: Could not find/open font in <phpfile>
Я использую специальный .TTF шрифт нашел здесь. Я могу открыть файл в Ubuntu как допустимый файл шрифта. Я также попробовал другие шрифты, с тем же результатом.
Я использую Ubuntu 10.04 LTS 32 бит, с установленными apache2, php5, freetype6 и php5-gd. Я также попытался chmod 777 файл и папка с файлом ttf, с тем же результатом.
как я могу заставить пример работать с помощью пользовательского файла шрифта ttf?
*Edit: код, который я использую:
<?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
тестирование is_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
3 ответов
вы можете попробовать вставить:
putenv('GDFONTPATH=' . realpath('.'));
перед первым imagettftext
, просто чтобы убедиться, что это не вопрос пути.
обновление
в случае, если вы используете кэш шрифтов как fc-cache
, не забудьте обновить его, например:
sudo fc-cache -f -v
попробуйте переместить ttf-файл в тот же каталог, что и ваш php-файл, и измените $font to
$font = 'UnmaskedBB.ttf';