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