首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >imagettftext无法打开字体文件

imagettftext无法打开字体文件
EN

Stack Overflow用户
提问于 2011-05-23 00:54:51
回答 4查看 17K关注 0票数 7

使用example from php.net时,我会收到警告,并且图像无法正确呈现。我提供了.ttf文件的完整路径,如下所示:/var/www/public/myfont.ttf

代码语言:javascript
复制
PHP Warning:  imagettftext() [<a href='function.imagettftext'>function.imagettftext</a>]: Could not find/open font in <phpfile>

我使用的是here自定义的.ttf字体。我可以在Ubuntu中将该文件作为有效的字体文件打开。我还尝试了其他字体,结果也是一样的。

我使用的是Ubuntu10.04LTS32位,安装了apache2,php5,freetype6和php5-gd。我也尝试用ttf文件chmod 777文件和文件夹,同样的结果。

如何使用自定义的ttf字体文件使示例正常工作?

*Edit:我使用的代码:

代码语言:javascript
复制
<?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()的输出;

代码语言:javascript
复制
[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_fileis_readable

代码语言:javascript
复制
$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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-24 16:28:12

升级发行版,包括所有php包都解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2011-05-23 01:57:05

您可以尝试插入:

代码语言:javascript
复制
putenv('GDFONTPATH=' . realpath('.'));

在第一个imagettftext前面,只是为了确保它不是路径问题。

更新

如果你正在使用像fc-cache这样的字体缓存,别忘了刷新它,例如:

代码语言:javascript
复制
sudo fc-cache -f -v
票数 8
EN

Stack Overflow用户

发布于 2011-05-23 01:38:12

尝试将ttf文件移动到与您的php文件相同的目录中,并将$font更改为

代码语言:javascript
复制
$font = 'UnmaskedBB.ttf';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6089393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档