2016-12-16 3 views
1

Ich muss ein Bild unter Verwendung von Imagemagick dynamisch mit einer Leinwand als Basis und einigen anderen Bildern darüber zusammensetzen.Imagemagick-Parameter in Bash-Variablen werden nicht richtig interpretiert?

Derzeit ist die einfachste Szenario funktioniert einfach (bitte beachten Sie zwei Bilder src1.png und src2.png hierfür genannt benötigen arbeiten):

convert src1.png -gravity northwest -draw 'image Over 10,10 0,0 "src2.png"' result.png 

aber ich muss dinamically diese Parameter schmieden zu können, zeichne ein, zwei oder mehr Bilder auf src1.png.

Um dies zu tun, habe ich versucht, die Parameter in einer Variablen zu speichern und dann eine Substitution zu tun. Ich habe versucht, zwei Versionen von diesem, beide mit Arrays und mit einfachen Strings:

DRAWOPTS=(-draw 'image Over 10,10 0,0 \"src2.png\"') 
convert src1.png -gravity northwest ${DRAWOPTS[@]} result.png 

DRAWOPTS="-draw 'image Over 10,10 0,0 \"src2.png\"'" 
convert src1.png -gravity northwest $DRAWOPTS result.png 

Aber ich bekomme immer diese Fehler:

convert.im6: non-conforming drawing primitive definition `image' @ error/draw.c/DrawImage/3160. 
convert.im6: unable to open image `Over': No such file or directory @ error/blob.c/OpenBlob/2641. 
convert.im6: no decode delegate for this image format `Over' @ error/constitute.c/ReadImage/544. 
convert.im6: unable to open image `10,10': No such file or directory @ error/blob.c/OpenBlob/2641. 
convert.im6: no decode delegate for this image format `10,10' @ error/constitute.c/ReadImage/544. 
convert.im6: unable to open image `0,0': No such file or directory @ error/blob.c/OpenBlob/2641. 
convert.im6: no decode delegate for this image format `0,0' @ error/constitute.c/ReadImage/544. 
convert.im6: unable to open image `"src2.png"'': No such file or directory @ error/blob.c/OpenBlob/2641. 
convert.im6: no decode delegate for this image format `"src2.png"'' @ error/constitute.c/ReadImage/544. 
convert.im6: non-conforming drawing primitive definition `image' @ error/draw.c/DrawImage/3160. 

Und ich kann dies nicht die Arbeit. Brauchen Sie bitte etwas Hilfe mit dieser zitierenden Hölle.

Antwort

1

Sie müssen die Erweiterung des Arrays angeben.

DRAWOPTS=(-draw 'image Over 10,10 0,0 "src2.png"') 
convert src1.png -gravity northwest "${DRAWOPTS[@]}" result.png 
+0

Ich dachte, ich habe das schon versucht, aber offensichtlich habe ich etwas vermisst. Wahrscheinlich entkam ich '' '' '' '' 'die ganze Zeit und das wird nie funktionieren. Danke! –

Verwandte Themen