Imagick:无法查询字体指标

时间:2011-07-28 19:58:03

标签: php imagemagick imagick

我正在研究(应该是什么)一个简单的脚本,它将文本添加到图像中。经过我的脚本几次寻找任何错误后,我终于决定尝试从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);

我不能为我的生活找到任何关于此错误通过谷歌的信息。我也无法找到有关此方法或潜在失败原因的充分文档。基本上,我很难过。如果有人能提供见解或修复,我们将不胜感激。

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

Imagick模块版本:3.1.0b1

2 个答案:

答案 0 :(得分:1)

你尝试过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/

答案 1 :(得分:0)

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