【问题标题】:Warning - Invalid font filename警告 - 字体文件名无效
【发布时间】:2018-01-27 21:15:28
【问题描述】:

问题

我收到一个运行时错误,上面写着 - 字体文件名无效。我在 Window 8.1 中使用 XAMPP

看来我需要映射 C:\XAMPP 中存在的字体文件夹的任何路径,或者请提出建议。

$jpg_image = imagecreatefromjpeg('sunset.jpg');
$white = imagecolorallocate($jpg_image, 255, 255, 255);
$font_path = 'font.TTF';
$text = "This is a sunset!";
imagettftext($jpg_image, 25, 0, 75, 300, $white, $font_path, $text);

【问题讨论】:

  • 该文件是否与该脚本存在于同一文件夹中?如果是,请尝试将其更改为:$font_path = __DIR__ . '/font.TTF';。如果在同一个文件夹中不存在,则添加绝对路径。
  • 还是一样的错误。

标签: php


【解决方案1】:

您必须使用putenv 定义路径:

putenv('GDFONTPATH=' . realpath('.'));
$font_path = 'font'; // no .ttf

看看http://php.net/imagettftext

【讨论】:

  • @Pankaj 我认为您必须将字符串拆分为多个字符串。然后使用几个imagettftext() 调用来编写它们。如果我明白你的问题:)
  • 我认为答案是否定的。您必须拆分字符串,计算每个字符串的大小,然后将每个字符串写在正确的位置,使用您想要的颜色。
  • @Pankaj 就像我之前说的。您必须计算大小并编写多个字符串。但是,我不认为这是谈论这个的正确地方:)
  • 你能检查一下吗? stackoverflow.com/questions/48476439/…
【解决方案2】:

当您为imagettftext() 设置字体时,您需要以/ 开头的字体名称,否则将自动添加.TTF

根据 PHP 使用的 GD 库版本,当字体文件不以前导 / 开头时,.ttf 将附加到文件名,并且库将尝试沿着库定义的字体路径搜索该文件名.

资源:php.net/imagettftext.

所以你的字体声明应该是这样的:

// this is if your font is in the default GD directory
$font_path = 'font';

// default directory is set by
putenv('GDFONTPATH=' . realpath('.'));

或者您可以指定字体的整个路径:

// font is in some other directory
$font_path = '/path/to/font.ttf';

【讨论】:

    猜你喜欢
    • 2019-07-07
    • 2011-10-21
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2022-11-13
    相关资源
    最近更新 更多