2016-07-27 35 views
0

Ich versuche, ein Rechteck über die volle Breite eines Bildes mit convert [1] zu zeichnen. Ich versuche, ImageMagick Attributes zu verwenden, um dies zu erreichen.Wie kann ich die imagemagick-Attribute im Befehl "Rechteck zeichnen" verwenden?

Der Befehl, den ich verwenden, ist dies:

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

Der Ausgang I erhalten ist:

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

Mit debug:

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

ich:

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. 

Ich möchte keine temporäre Datei verwenden und möchte dies eventuell nach einem Trim-Replay verwenden. Ich möchte auch die '42' durch eine Formel ersetzen, wenn es möglich ist, Attribute in diesem Befehl zu verwenden.

Ich denke, die Frage ist, ob dies unterstützt wird (und wenn nicht dann warum das H nicht)?

[1] Version: ImageMagick 7.0.2-5 Q16 x64 2016-07-22 http://www.imagemagick.org

Antwort

1

Ich denke, die Frage ist, ob diese unterstützt wird (und wenn nicht, dann, warum der H nicht)?

Es sollte unterstützt werden, aber ich würde empfehlen, das Protokoll fx: zu verwenden, um die Werte zu berechnen.

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

out_fill

Ich würde vermuten, Sie NonconformingDrawingPrimitiveDefinition als Ausgang sind zu sehen, außerhalb des Bereichs der authentic pixels zu ziehen. Denken Sie daran, dass der Spalten-/Zeilenindex bei 0 beginnt und nth - 1 erreicht.

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

out_stroke

+0

Vielen Dank für Ihre Antwort. Leider funktioniert es nicht für mich. Ich laufe von einem Cmd-Skript konvertieren. 'convert' scheint keine% [] Attribute im Befehl" draw rectangle "zu akzeptieren. Ich habe das Rechteck "-draw" 0,0 %% [w-1], 42 "' verwendet, um die geringste Anzahl an Fehlern zu erhalten. NonconformingDrawingPrimitiveDefinition erscheint jedes Mal, wenn ich versuche, Attribute zu verwenden. –

+0

Der Befehl "-draw" akzeptiert% [fx ...] Werte in der freigegebenen Version (6.9.x) von IM nicht. Es könnte in 7, aber das ist nicht, was die meisten Menschen noch nicht haben. – Caleb