什么';这有什么不对';外汇和x27;ImageMagick中的表达式?

什么';这有什么不对';外汇和x27;ImageMagick中的表达式?,imagemagick,Imagemagick,我试图用ImageMagick去除一堆图像上的背景。ImageMagick网站记录了执行此操作的方法。他们还方便地编写了一个shell脚本,其中包含了这些方法的首选组合 不过我在脚本中遇到了一个错误。当你调用脚本时,你会给出一些模糊参数,如果你知道的话,还会加上特定的背景色。传递显式背景色,如RGB(37188111),将导致最终命令的以下片段: ( +clone -sparse-color voronoi 0,0,RGB(37,188,111) ) …而且效果很好。但是,如果未传递bgcol

我试图用ImageMagick去除一堆图像上的背景。ImageMagick网站记录了执行此操作的方法。他们还方便地编写了一个shell脚本,其中包含了这些方法的首选组合

不过我在脚本中遇到了一个错误。当你调用脚本时,你会给出一些模糊参数,如果你知道的话,还会加上特定的背景色。传递显式背景色,如
RGB(37188111)
,将导致最终命令的以下片段:

( +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}]
正确吗?

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

只有在ImageMagick版本6.2.10及更高版本中才引入了它。对于括在大括号中的特殊情况,您可以在其中使用转义序列“%[fx:…]”。因此,这两种方法在v6.2.10之后都应该有效:

%[fx:expression]
%[pixel:expression]
至于你的问题:是的,“像素是可以接受的fx替代品”

表达式
p{0,0}
的意思是:“返回当前图像中左上角像素的颜色值”

因此,请检查您的ImageMagick版本:

 convert -version
至于为什么完整表达式因
-sparse color
的“参数数目错误”而失败:

  • 检查
    voronoi
    是否属于
    -sparse color
    支持的方法之一:

    convert-列出稀疏颜色

    (我想是的,否则您可能会看到不同的错误消息。)

  • -sparse color
    的一般语法记录如下:

    -稀疏颜色方法“x,y颜色…”

    这建议您可以使用额外的引号来创建稀疏颜色,以识别正确数量的参数。怎么样

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

    ?


  • 我遇到了一个问题,尽管使用了v7+,但我的fx表达式也无法工作。我将命令从
    convert
    更改为
    magick
    ,然后它开始工作。希望这能帮助其他人避免头痛。

    您安装了哪个版本的ImageMagick?版本:ImageMagick 6.6.8-1 2012-05-20 Q16--我会在下面查看您的建议,谢谢