繁体   English   中英

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

[英]ImageMagick not creating text on my machine - Perl

我最近接手了其他人在项目中的职位。 当以下代码在其旧计算机上运行时,它可以正常工作。 但是当我运行它时,我得到了一条空白的白线和一个带有红色轮廓的黄色矩形。 本质上,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显示文本?

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

OS X Mavericks 10.9.3; ImageMagick 6.8.9-1 / PerlMagick 6.88(通过Homebrew安装)

我想通了大家! 事实证明,这确实是字体的问题。 我在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');

希望这对遇到此问题的其他人有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM