我正在尝试一些示例代码,以便试验PHP5-GD libaray。我已经向Google做了几次努力以获得答案,但没有成功。 我在文档根目录下有一个字体:/home//www/tiffanytwolight-regular.ttf(我已经更改了/ var / www / html /中的文档根目录,这是我安装中的默认根目录)。我想绘制条形直方图。 重要的代码片段是:
class SimpleBar {
private $xgutter = 20; // left/right margin
private $ygutter = 20; // top/bottom margin
private $bottomspace = 30; // gap at the bottom
private $internalgap = 20; // space between bars
private $cells = array(); // labels/amounts for bar chart
private $totalwidth; // width of the image
private $totalheight; // height of the image
private $font; // the font to use
function __construct( $width, $height, $font ) {
$this->totalwidth = $width;
$this->totalheight = $height;
$this->font = $font;
}
}
我没有成功为$ font提供有意义的内容。 $ this->字体多次出现但未设置。 例子:
$box = ImageTTFbBox( $textsize, 0, $this->font, $key );
ImageTTFText( $image, $textsize, 0, ($center-($tw/2)),
($this->totalheight-$this->ygutter), $black,
$this->font, $key );
调用类函数的代码是: 包括(" SimpleBar.class.php&#34);
$graph = new SimpleBar( 500, 300, "tiffanytwolight-regular.ttf" );
$graph->addBar( "USA", 200 );
$graph->addBar( "India", 400 );
$graph->addBar( "UK", 240 );
$graph->addBar( "Australia", 170 );
$graph->addBar( "UAE", 270 );
$graph->draw();
这会产生错误消息(通过ini_set(' display_errors',' on'):
(!)警告:imagettfbbox():在第30行的/home/par/www/SimpleBar.class.php中找不到/打开字体
我很感激一些好的提示。
答案 0 :(得分:0)
GD不需要系统范围的字体。只需将它们存储在项目资源中,然后提供完整路径而不是文件名。来自ImageTTFText()
manual page:
fontfile
您希望使用的TrueType字体的路径。
根据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'; ?>