imagemagick:如何在draw rectangle命令中使用%[fx:...]运算符?

时间:2018-06-13 10:42:08

标签: shell image-processing terminal imagemagick imagemagick-convert

我可以这样做在图像上绘制一个红色矩形:

convert original.png -fill red -draw "rectangle 10,20 150,40" result.png

150,40是右下角坐标。但是如果我在那里使用%[fx:...]运算符,就像这样:

convert original.png -fill red -draw "rectangle 10,20 %[fx:w-30],40" result.png

%[fx:w-30]应该评估图片的宽度减去30.

但是我收到了错误:

  

转换:不符合图形的原始定义`矩形' @ error / draw.c / DrawImage / 4227。

我也试过单引号(')而不是双引号("),但没有区别。

我的imagemagick版本是7.0.7-36。

我做错了什么?在上面的例子中使用%[fx:...]运算符的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

感谢@GeeMack,解决方案是:使用magick代替convert,因此它变为:

magick original.png -fill red -draw "rectangle 10,20 %[fx:w-30],40" result.png

答案 1 :(得分:0)

如果您仍在使用ImageMagick 6,则可以使用identify命令输出格式化的字符串,然后在convert命令中使用它。使用shell语法,可以表示如下:

convert original.png -fill red -draw "$(identify -format 'rectangle 10,20 %[fx:w-30],40' original.png)" result.png