2016-07-27 93 views
0

我想通过convert [1]在图像的整个宽度上绘制一个矩形。我正在尝试使用ImageMagick Attributes来完成此操作。如何在绘制矩形命令中使用imagemagick属性?

我使用的命令是这样的:

convert ImageFile -fill black -stroke black -draw "rectangle 0,0 %[w],42" ImageFileNew 

我得到的输出是:

convert: NonconformingDrawingPrimitiveDefinition `rectangle' @ error/draw.c/DrawImage/3271. 

使用调试:

convert ImageFile -fill black -stroke black -draw "rectangle 0,0 %[w],42" ImageFileNew 

我得到:

2016-07-27T14:55:37+02:00 0:00.047 0.047u 7.0.2 Draw CONVERT[6660]: draw.c/DrawImage/1755/Draw 
    begin draw-image 
2016-07-27T14:55:37+02:00 0:00.047 0.047u 7.0.2 Draw CONVERT[6660]: draw.c/DrawImage/3207/Draw 
    rectangle 0,0 
2016-07-27T14:55:37+02:00 0:00.047 0.047u 7.0.2 Draw CONVERT[6660]: draw.c/DrawImage/3258/Draw 
    end draw-image 
CONVERT: NonconformingDrawingPrimitiveDefinition `rectangle' @ error/draw.c/DrawImage/3271. 

我不想使用一个临时文件,我想在修剪重新调用后最终使用它。如果可以在此命令中使用属性,我还想用公式替换“42”。

我想问题是如果这是支持的(如果不是那么为什么H不)?

[1]版本:ImageMagick的7.0.2-5 Q16 64 2016年7月22日http://www.imagemagick.org

回答

1

我猜问题是,如果这种支持(如果没有的话,为什么H不)?

它应该被支持,但我会建议使用fx:协议来计算值。

convert rose: -fill red \ 
     -draw 'rectangle 0 0 %[fx:w] %[fx:h]' \ 
     out_fill.png 

out_fill

我猜你看到NonconformingDrawingPrimitiveDefinition作为起点向外绘制authentic pixels的范围。请记住,列/行索引从0开始,到达nth - 1

convert rose: -fill red -stroke black -strokewidth 2 \ 
       -draw 'rectangle 0 0 %[fx:w-1] %[fx:h-1]' \ 
       out_stroke.png 

out_stroke

+0

谢谢你的回答。不幸的是,它不适合我。我从一个cmd脚本运行转换。 'convert'似乎不接受绘制矩形命令中的任何%[]属性。我使用'-draw'矩形0,0 %% [w-1],42“'来获取最少量的错误,每次尝试使用属性时都会出现NonconformingDrawingPrimitiveDefinition。 –

+0

'-draw'命令不接受发布的(6.9.x)版IM中的%[fx ...]值。它可能在7,但那不是大多数人的。 – Caleb