【问题标题】:ImageMagick not creating text on my machine - PerlImageMagick 不在我的机器上创建文本 - Perl
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多