【发布时间】:2014-07-28 03:54:30
【问题描述】:
我最近在一个项目中接手了别人的职位。当下面的代码在他们的旧机器上运行时,它运行良好。但是当我运行它时,我得到一条空白的白线,上面有一个带有红色轮廓的黄色矩形。本质上,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 安装)
【问题讨论】:
-
试试
brew update; brew upgrade; brew upgrade $(brew outdated); brew doctor -
已经做到了。事实上,我今天早些时候重新安装了 Homebrew 来处理另一个问题。这似乎并不重要;我在重新安装之前和之后遇到了同样的错误。
-
如果你想制作一个独立的 Perl 程序,其中包含一些硬编码的合理数字,我可以在我的 Mavericks 安装中为你试一试......
-
好吧,这是一个和我非常相似的:
#!/usr/bin/perl use Image::Magick; use strict; use warnings; my $image = new Image::Magick; $image->Set( size => '500x500' ); $image->ReadImage( 'xc:white' ); $image->Annotate( text=>'This is a cool line of text', font=>'Arial', fill=>'black', pointsize=>'12', geometry=>'+0+20' ); $image->Write( 'TextOut.png' );抱歉,我不知道如何格式化 cmets:/ -
顺便说一句,我刚从博客上得到这个,我不知道它的效果如何。我的问题的 B/c,我自己无法测试@MarkSetchell
标签: perl imagemagick perlmagick