Hallo Roman, Am 19.10.2010 21:48, schrieb Roman Fietze:
Zum Hintergrund des Problems siehe unten.
Kurz: ImageMagick draw rectangle Kommando dynamisch in ein convert einbauen.
Ich habe zum Ueben mein Script mal drastisch reduziert auf folgendes fehlerhafte Script:
--- snippety snip --- #!/bin/bash set -x
function rect { echo "-stroke black -strokewidth 3 -draw 'rectangle 1,2 5,6'" }
convert -size 10x10 xc:transparent -fill transparent \ $( rect ) \ out.png --- snappety snap ---
[...]
Falls du dich zu sehr darauf versteifst und in deinem Skript nur noch Verschlimmbesserungen einbaust, dann solltest du besser nochmal zum Anfang zurück und eine etwas längere Pause einlegen. Oft ist die Lösung direkt vor der Nase. ;-) Ich würde im o.g. Code-Ausschnitt den Parameter für convert von der Funktion "rect" nicht mit echo ausgeben lassen, sondern in einer Variable wegspeichern. Hier ein Beispiel: --- ANFANG --- ANFANG --- ANFANG --- ANFANG --- ANFANG --- #!/bin/bash # initialisieren RECT_PARAMETER="" function rect() { # die übergebenen Parameter ($1,$2,$3,...) an diese Funktion # an dieser Stelle verarbeiten lassen # ... # Werte festlegen (ggfs. vorher von irgendwo auslesen) STROKE="black" STROKEWIDTH="3" X0="1" Y0="2" X1="5" Y1="6" # Parameter für convert zusammen bauen RECT_PARAMETER="-stroke ${STROKE} \ -strokewidth ${STROKEWIDTH} \ -draw 'rectangle ${X0},${Y0} ${X1},${Y1}'" } # .... hier weiteren code .... # Aufruf der Funktion "rect" ggfs. mit weiteren Parameter rect wert1 wert2 wert3 wert4 usw. # Die Variable RECT_PARAMETER im convert-Parameter einbetten convert -size 10x10 xc:transparent \ -fill transparent \ ${RECT_PARAMETER} \ out.png # .... hier weiteren code .... --- ENDE --- ENDE --- ENDE --- ENDE --- ENDE --- Das o.g. Beispiel kann man noch weiter ausführen. Jedoch würde das den Rahmen sprengen. Folgende Dokumentation kann dir beim Skripting helfen: # info bash HTH, -- Gruß Sebastian - openSUSE Member (Freespacer) Webseite/Blog: http://www.sebastian-siebert.de Wichtiger Hinweis zur openSUSE Mailing Liste: http://de.opensuse.org/OpenSUSE_Mailinglisten-Netiquette -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org