Imagick:查询字体度量失败


Imagick: Failed to query the font metrics

我正在工作(应该是)一个简单的脚本,将文本添加到图像。在检查了我的脚本几次寻找任何错误之后,我最终决定尝试从php.net运行一个样本,我遇到了相同的,不可描述的错误:"未能查询字体指标"。下面是代码:

/* Text to write */
$text = "Hello World!";
/* Create Imagick objects */
$image = new Imagick();
$draw = new ImagickDraw();
$color = new ImagickPixel('#000000');
$background = new ImagickPixel('none'); // Transparent
/* Font properties */
$draw->setFont('Arial');
$draw->setFontSize(50);
$draw->setFillColor($color);
$draw->setStrokeAntialias(true);
$draw->setTextAntialias(true);
/* Get font metrics */
$metrics = $image->queryFontMetrics($draw, $text);
/* Create text */
$draw->annotation(0, $metrics['ascender'], $text);
/* Create image */
$image->newImage($metrics['textWidth'], $metrics['textHeight'], $background);
$image->setImageFormat('png');
$image->drawImage($draw);
/* Save image */
file_put_contents('/tmp/file.png', $image);

我在谷歌上找不到关于这个错误的任何信息。我也找不到关于该方法或潜在故障原因的充分文档。基本上,我被难住了。如果有人能提供见解或修复,将不胜感激。

ImageMagick版本:ImageMagick 6.6.5-10 2011-04-06 Q16

Imagick模块版本:3.1.0b1

你试过cli版本吗?服务器上是否安装了imagemagick ?如果是然后运行如下命令

system('convert -background lightblue -fill blue '
      -font Candice -pointsize 72 label:Anthony '
      label.gif  ');

查看运行脚本后服务器中是否有imagenamed label.gif。供参考http://www.imagemagick.org/Usage/text/

对于那些有类似问题的人,PHP Imagick异常并不总是最具描述性的。我本来可以节省大量的时间来检查安装在服务器上的Image Magic应用程序的输出。只是要记住一些事情。要查看当前安装的委托(模块)的列表,请使用命令convert -list configure并检查输出中以"delegate"开头的行。如果您遇到同样的错误,我建议您先检查这里。我发现我错过了自由式和幽灵脚本委托。在安装依赖项并快速重新编译ImageMagick之后,一切都像魅力一样工作。