2014-06-06 31 views
0

我最近接管了别人在项目中的位置。当下面的代码在他们的旧机器上运行时,它工作正常。但是当我运行它时,我会看到一个带有红色轮廓的黄色矩形的空白线。基本上,Draw()方法工作正常,但Annotate()方法没有做任何事情。无论我将文本,字体,字体大小或颜色传递给哪个值,都不会显示文本。ImageMagick没有在我的机器上创建文本 - Perl

下面是相关代码:

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显示文本?

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

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

+0

尝试'brew更新;酿造升级;酿造升级$(酿造过时);酿造医生' –

+0

已经做到了。事实上,我今天早些时候重新安装了Homebrew来处理另一个问题。不是说这似乎很重要;在重新安装之前和之后,我有同样的错误。 – BrianAtUAB

+0

如果你喜欢用一些硬编码的一些明智的数字来制作一个自包含的Perl程序,那么我可以在我的小牛装置上为你尝试它... –

回答

0

我想通了每个人!事实证明,这确实是字体的问题。我在perlmonks文章中找到了解决方案。即使使用的字体在机器上,有时也不会找到它(但是在其他机器上它会出于任何原因)。所以位置必须被硬编码在

改变了注释线以下。

# 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'); 

希望这有助于其他人谁过这样的问题来了!

相关问题