ImageMagick中这个'fx'表达有什么问题?

时间:2012-08-01 00:50:47

标签: imagemagick

我正在尝试使用ImageMagick摆脱一堆图像的背景。 ImageMagick网站记录了variety of techniques这样做。他们还方便地编写了一个shell脚本bg_removal.sh,其中包含了这些方法的首选组合。

我在脚本中遇到错误。当您调用脚本时,您会提供一些模糊参数,如果您知道它,还会提供特定的背景颜色。传递明确的背景颜色,如RGB(37,188,111),会产生最终命令的这个片段:

( +clone -sparse-color voronoi 0,0,RGB(37,188,111) )

..它工作正常。但是,如果你没有传递bgcolor,那么表达式如下所示:

( +clone -sparse-color voronoi 0,0,%[fx:p{0,0}] )

并且失败并显示-sparse-color的参数数量错误的消息。我可以将它改为不同的功能,它可以工作:

( +clone -sparse-color voronoi 0,0,%[pixel:p{0,0}] )

我不太了解ImageMagick知道fx函数正在做什么以及pixel是否是可接受的替代品。我认为它正在寻找坐标0,0处的颜色以猜测背景颜色,但不完全确定。语法0,0,%[fx:p{0,0}]是否正确?

2 个答案:

答案 0 :(得分:2)

-fx是一个允许您使用数学或IM特定表达式应用于像素的运算符:-fx 'expression'

仅在ImageMagick版本6.2.10及更高版本中引入时,您可以在image properties escaped strings中使用转义序列,例如'%[fx:...]', 用括号括起来的特殊场合。所以这两种方法都应该在v6.2.10之后起作用:

%[fx:expression]
%[pixel:expression]

至于您的问题:是的,'像素 IS 是fx的可接受替代品

表达式p{0,0}表示:'返回当前图像'中左上角像素的颜色值。

请检查您的ImageMagick版本:

 convert -version

至于为什么由于{{1>}的错误的参数数量而导致整个表达式失败:

  1. 检查-sparse-color支持的方法voronoi是否属于<{1}}:

    -sparse-color

    (我认为是 - 否则你可能会看到不同的错误信息。)

  2. convert -list sparse-color的一般语法记录为:

    -sparse-color

    这表明你应该使用额外的引号来使稀疏颜色识别正确数量的参数。 <怎么样

    -sparse-color method 'x,y color ...'

    ...

答案 1 :(得分:0)

我遇到了一个问题,即尽管使用了 v7+,我的 fx 表达式也不起作用。我将命令从 convert 更改为 magick,然后它开始工作。希望这能帮助其他人免于撞墙。