【问题标题】:imagemagick: how to use the %[fx:...] operator in draw rectangle command?imagemagick:如何在绘制矩形命令中使用 %[fx:...] 运算符?
【发布时间】:2018-11-22 21:56:10
【问题描述】:

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

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:...]运算符的正确使用方法是什么?

【问题讨论】:

  • 使用 ImageMagick 7 你应该使用“magick”而不是“convert”。
  • @GeeMack 谢谢,以前从未听说过。我的转换版本说 7.0.7-36 但显然convertmagick 之间存在差异。无论如何,它有效,谢谢!
  • 在 IM 7 中使用 convert 通常会调用 IM 6。在大多数命令中,IM 6 不支持 %[fx...] 计算。如果您设置了指向魔法的符号链接,则可以在 IM 7 中使用 convert。

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


【解决方案1】:

感谢@GeeMack,解决方案是:使用magick 而不是convert,所以它变成:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 2012-09-06
      相关资源
      最近更新 更多