我在 FreeBSD 11.0 服务器上使用 php 7.0.19 和 ImageMagick 6.9.6-4。我将 imagemagick 用于很多事情,但我才刚刚开始使用它在我的图像上叠加文本。我遇到的问题是,每当我尝试使用 annotateImage 功能时,都会抛出一个错误,提示“无法注释图像”。
我已经在 stackoverflow 上查看了很多与 annotateImage 相关的问题,并且我已经检查了文档以查看我是否可以自己解决问题,但我被卡住了。在其他 annotateImage 问题上,我看到有些人由于未安装特定字体而遇到问题,这也可能是我的问题,但我尝试将字体文件(ttf 文件)与我的脚本放在同一目录中我仍然有同样的问题。
运行convert -list font返回空结果,表示没有imagemagick可以直接/默认访问的字体;但是,我认为通过将字体文件包含在与我的脚本相同的目录中,我无论如何都可以使其工作。也许这是一个错误的假设?
这是我用于测试的代码:
$imagick = new Imagick('originalImage.jpg');
$draw = new ImagickDraw();
$draw->setFillColor('#ffffff');
$draw->setFont('ARIAL.TTF');
$draw->setFontSize(20);
$imagick->annotateImage($draw, 20, 100, 0, 'The quick fox jumps over the lazy dog');
$imagick->drawImage($draw);
$imagick->writeImage('finalImage.jpg');
我还尝试了其他不需要原始图像的示例脚本,并收到了相同的错误。例如,此脚本产生相同的错误:
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );
$image->newImage(800, 75, $pixel);
$draw->setFillColor('black');
$draw->setFont('ARIAL.TTF');
$draw->setFontSize( 30 );
$image->annotateImage($draw, 10, 45, 0,
'The quick brown fox jumps over the lazy dog');
$image->setImageFormat('png');
header('Content-type: image/png');
echo $image;
通过这个简单的测试,我希望在我的图像顶部添加“快速的狐狸跳过懒惰的狗”,但抛出异常并且错误消息只是说:无法注释图像。
关于如何解决错误的任何想法或建议?
慕仙森