为了账号安全,请及时绑定邮箱和手机立即绑定

使用 ImageMagick 时如何修复“无法注释图像”错误?

使用 ImageMagick 时如何修复“无法注释图像”错误?

PHP
慕无忌1623718 2021-06-30 22:57:18
我在 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;通过这个简单的测试,我希望在我的图像顶部添加“快速的狐狸跳过懒惰的狗”,但抛出异常并且错误消息只是说:无法注释图像。关于如何解决错误的任何想法或建议?
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

通过在imagemagick 论坛上发布这个问题,我能够弄清楚。问题是我们的 ImageMagick 安装缺少“freetype”委托,这是从字体渲染文本所必需的。



查看完整回答
反对 回复 2021-07-02
  • 1 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信