2012-08-01 40 views
1

我想摆脱一堆使用ImageMagick的图像背景。 ImageMagick网站记录了这样做的variety of techniques。他们还方便地编写了一个shell脚本,bg_removal.sh,它包含了他们的这些方法的首选组合。ImageMagick中这个'fx'表达有什么问题?

虽然我在脚本中出现错误。当你调用脚本时,你会给出几个模糊参数,如果你知道的话,加上特定的背景颜色。传递一个明确的背景颜色,像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}]是否正确?

+0

您安装了哪个版本的ImageMagick? – 2012-08-02 17:02:52

+0

版本:ImageMagick 6.6.8-1 2012-05-20 Q16 - 我会在下面查看您的建议,谢谢 – SkippyFlipjack 2012-08-02 20:15:51

回答

2

-fx是一种运算符,可让您使用数学或IM特定表达式应用于像素:-fx 'expression'

只是在ImageMagick的版本6.2.10,后来它被引入,你可以使用一个转义序列 LIKE“%[FX:...]”内image properties escaped strings,对于特殊场合他们被包围的时候在大括号。因此,这两种方法应该v6.2.10后工作:

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

,以你的问题:是的,“像素IS可接受的替代”为FX。

和表达式p{0,0}手段:“在当前图像中返回左上像素的颜色值”。

所以检查的ImageMagick的版本:

convert -version 

至于为什么你完整的表达式失败为-sparse-color因为'错误的参数数目'

  1. 检查voronoi-sparse-color支持的方法之一:

    convert -list sparse-color

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

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

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

    这意味着你也许应该使用更多的报价,使稀疏,颜色识别正确的参数个数。如何

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