2014-06-06 27 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'); 

希望這有助於其他人誰過這樣的問題來了!

相關問題