2016-07-27 44 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