ImageMagick不在我的机器上创建文本-Perl

ImageMagick不在我的机器上创建文本-Perl,perl,imagemagick,perlmagick,Perl,Imagemagick,Perlmagick,我最近在一个项目上接替了别人的职位。当下面的代码在他们的旧机器上运行时,它运行良好。但当我运行它时,我会得到一条空白的白线,带有一个红色轮廓的黄色矩形。从本质上讲,Draw()方法工作正常,但Annotate()方法没有做任何事情。无论我为文本、字体、字体大小或颜色传递什么值,都不会显示任何文本 以下是相关代码: my ($length,$width,$boxRef,$text,$font,$fontSize,$fontColor,$outFile) = @_; my $image = Ima

我最近在一个项目上接替了别人的职位。当下面的代码在他们的旧机器上运行时,它运行良好。但当我运行它时,我会得到一条空白的白线,带有一个红色轮廓的黄色矩形。从本质上讲,Draw()方法工作正常,但Annotate()方法没有做任何事情。无论我为文本、字体、字体大小或颜色传递什么值,都不会显示任何文本

以下是相关代码:

my ($length,$width,$boxRef,$text,$font,$fontSize,$fontColor,$outFile) = @_;

my $image = Image::Magick->new;
$image->Set(size=>$length."x".$width);
$image->ReadImage('xc:white');
$image->Draw(primitive=>'rectangle',stroke=>'red',fill=>'yellow',points=>"$$boxRef[0],$$boxRef[1],$$boxRef[2],$$boxRef[3]");
my $y = $image->Annotate(text=>$text,font=>$font,fill=>$fontColor,pointsize=>$fontSize,geometry=>'+0+20');
warn "$y" if "$y";
my $x = $image->Write($outFile);
warn "$x" if "$x";
undef $image;
我很确定代码没有问题,因为其他更简单的脚本也不起作用。我相信我的机器或ImageMagick的安装有问题,但我不知道是什么问题

我的老板说他记得前一个人因为字体问题而苦苦挣扎,所以也许这与此有关?在过去的一天左右,我一直在做一些挖掘工作,但我没有发现任何与我的问题非常相似的、能够提供良好解决方案的东西

有人知道为什么我不能让ImageMagick显示文本吗

有关我的设置的一些信息:


OSXMavericks 10.9.3;ImageMagick 6.8.9-1/PerlMagick 6.88(通过自制软件安装)

每个人我都明白了!事实证明,这确实是字体的问题。我在帕尔蒙克斯的帖子上找到了解决办法。即使使用的字体在机器上,有时也找不到(但在其他机器上,无论出于何种原因,都会找到)。因此,必须对位置进行硬编码

将注释行更改为以下内容:

# font has to be hard-coded in
my $y = $image->Annotate(text=>$text,font=>'/System/Library/Fonts/Courier.dfont',fill=>$fontColor,pointsize=>$fontSize,geometry=>'+0+20');

希望这能帮助任何遇到这个问题的人

尝试
brew更新;brew升级;brew升级$(brew过时);brew doctor
已执行。事实上,今天早些时候我重新安装了Homebrew来解决另一个问题。这似乎并不重要;在重新安装之前和之后,我都遇到了同样的错误。如果您想制作一个包含一些合理数字的自足Perl程序,所有这些数字都是硬编码的,我可以在我的Mavericks安装中为您尝试一下……好吧,这里有一个与我的非常类似的程序:
#/usr/bin/perl使用Image::Magick;严格使用;使用警告;my$image=新图像::Magick$图像->设置(大小=>500x500')$image->ReadImage('xc:white')$图像->注释(文本=>'这是一行很酷的文本',字体=>'Arial',填充=>'black',点大小=>'12',几何体=>'+0+20')$图像->写入('TextOut.png')抱歉,我不知道如何设置评论的格式:/顺便说一句,我刚从一个博客上得到这个,我不知道它的效果如何。B/c我的问题,我不能自己测试@MarkSetchell