更新:测试后,TTF文件似乎在那里。 更新:更改为字体文件的相对路径。仍然无效。
当我尝试使用GD通过PHP制作图像时出现以下错误。
[Tue Sep 01 19:44:15 2009] [错误] [client IP ADDRESS ] PHP警告: imagettftext()[function.imagettftext]: 无法找到/打开字体 /www/vhosts/website.com/htdocs/trial/TextToImage.class.php 第38行
我改变了字体的路径,因为它给了我同样的错误。我通过将文件放入文件夹将字体添加到服务器。我错过了什么?
/**
* @name : makeImageF
*
* Function for create image from text with selected font.
*
* @param String $text : String to convert into the Image.
* @param String $font : Font name of the text.
* @param int $W : Width of the Image.
* @param int $H : Hight of the Image.
* @param int $X : x-coordinate of the text into the image.
* @param int $Y : y-coordinate of the text into the image.
* @param int $fsize : Font size of text.
* @param array $color : RGB color array for text color.
* @param array $bgcolor : RGB color array for background.
*
*/
public function makeImageF($text, $font="/www/vhosts/website.com/htdocs/trial/CENTURY.TTF", $W=200, $H=20, $X=0, $Y=0, $fsize=18, $color=array(0x0,0x0,0x0), $bgcolor=array(0xFF,0xFF,0xFF)){
$this->im = @imagecreate($W, $H)
or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($this->im, $bgcolor[0], $bgcolor[1], $bgcolor[2]); //RGB color background.
$text_color = imagecolorallocate($this->im, $color[0], $color[1], $color[2]); //RGB color text.
imagettftext($this->im, $fsize, $X, $Y, $fsize, $text_color, $font, $text);
}
答案 0 :(得分:3)
它可能是您的libgd版本未知的格式的字体文件
phpinfo()输出的gd部分应包含FreeType / T1Lib库的版本。它是哪一个?
什么呢?
echo '<pre>Debug: '; passthru('file '.$font); echo "</pre>\n";
// imagettftext($this->im, $fsize, $X, $Y, $fsize, $text_color, $font, $text);
打印?
编辑:oops,忘记字体文件的类型。该错误将是Could not read font
。 Could not find/open font
实际上意味着它所说的:要么没有这样的文件,要么无法访问它
passthru('file '.$font);
的输出是“仅”CENTURY.TTF: TrueType font data
?然后你使用了相对路径。尝试将绝对路径传递给imagettftext()
$font_realpath = realpath($font);
if ( !$font_realpath || !is_file($font_realpath) ) {
die 'no such font file';
}
else if ( !is_readable($font_realpath) ) {
die 'cannot read font file';
}
imagettftext($this->im, $fsize, $X, $Y, $fsize, $text_color, $font_realpath, $text);
答案 1 :(得分:1)
这可能是你调用函数的方式 - 将其添加到函数中以帮助你进一步
if (!file_exists($font))
die("Font not found ($font)");
if (!is_readable($font))
die("Font exists but not readable ($font)");
同时检查字体路径是绝对的,也不是以斜杠开头,imagettftext状态的手册页
取决于GD的版本 库文件PHP正在使用,当fontfile时 不以领先/然后开始 .ttf将附加到文件名 并且图书馆将尝试搜索 对于那个文件名沿着 库定义的字体路径。
答案 2 :(得分:0)
Web服务器(运行Web服务器的用户)是否具有对该文件夹/文件的读取权限?