Kompakte Notebooks Kompakte Notebooks - Wuala
Kompakte Notebooks Kompakte Notebooks - Wuala
Kompakte Notebooks Kompakte Notebooks - Wuala
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Praxis | Gimp-Skripte<br />
Solche Blumen in verschiedenen<br />
Blautönen erzeugt und verteilt das<br />
Scheme-Skript automatisch.<br />
Filter haben ein Script-Fu-Gegenstück – der<br />
kleine Eimer, der eine Auswahl mit Farbe<br />
füllt, heißt in Script-Fu beispielsweise gimpedit-fill,<br />
die Prozedur zum Füllen gimp-edit-bucket-fill.<br />
Um herauszufinden, wie eine Prozedur<br />
heißt und welche Aktion welcher Prozedur<br />
entspricht, wirft man einen Blick in den<br />
Script-Fu Procedure Browser und nimmt die<br />
Script-Fu-Konsole zur Hilfe. Die Konsole verbirgt<br />
sich im Menu „Filter/Script-Fu“ und sobald<br />
man dort auf „Durchsuchen“ klickt, öffnet<br />
sich der Procedure Browser.<br />
Scheme Grundlagen<br />
Script-Fu und Scheme erfordern die Kenntnis<br />
einer Handvoll Regeln [3]. Scheme selbst ist<br />
eine funktionale Sprache mit geklammerter<br />
Präfix-Notation. Script-Fu-Ausdrücke sehen<br />
folgendermaßen aus:<br />
(gimp-edit-copy drawable)<br />
(gimp-edit-paste drawable FALSE)<br />
Die erste Zeile ruft die Kopierfunktion auf,<br />
der Parameter drawable steht für die Zeichenfläche,<br />
von der kopiert werden soll. Die zweite<br />
Zeile zeigt die Einfügefunktion mit zwei<br />
Parametern. Der erste steht wieder für die<br />
Zeichenfläche, der zweite entscheidet, ob<br />
die aktuelle Auswahl gelöscht wird oder der<br />
Inhalt der Zwischenablage als neue Ebene<br />
dahinter eingefügt wird. Zusätzlich zu den<br />
typischen mathematischen Operationen, die<br />
bei der Bildbearbeitung mit Skripten hin und<br />
wieder anstehen, besteht ein Gimp-Skript oft<br />
nur aus einigen einzeiligen Script-Fu-Anweisungen<br />
ähnlich den oben gezeigten. Das<br />
Ganze garniert man dann mit Bedingungen<br />
in Scheme wie<br />
(if (= merge-visible-layers TRUE)<br />
(do something)<br />
)<br />
und Schleifen wie<br />
(while (> steps 0)<br />
(do something)<br />
)<br />
und hat dann schon fast alle Hilfsmittel für<br />
ein Gimp-Skript. Variablen gibt es auch; zwei<br />
Deklarationen kommen in Gimp-Skripten<br />
vor:<br />
(set! layer (car (gimp-image-get-active-layer image)))<br />
setzt die globale Variable layer mit dem Scheme-Befehl<br />
car auf das erste Element der Liste,<br />
das die Prozedur gimp-image-get-active-layer liefert.<br />
Kurz: In der Variable layer landet die aktuell<br />
aktive Ebene des Bildes image. Das car<br />
taucht sehr häufig auf, weil alle Gimp-Prozeduren<br />
eine Liste liefern, aus der man sich in<br />
der Regel den ersten Parameter mit car herausgreifen<br />
muss.<br />
Statt set! verwendet man let*, um lokale Variablen<br />
zu definieren. Diese gelten dann nur<br />
für alle Schritte, die innerhalb des let*-Blocks<br />
abgearbeitet werden. Ein Beispiel dafür finden<br />
Sie im Beispielskript zum Duplizieren<br />
und Rotieren eines Objekts.<br />
Nicht Scheme-, sondern Script-Fu-spezifisch<br />
und in jedem Gimp-Skript enthalten ist<br />
die Anweisung<br />
(script-fu-menu-register "script-fu-myscript" —<br />
"/Testskripte")<br />
die dem Skript einen Eintrag im Menü zuweist.<br />
Hier erscheint es beispielsweise im<br />
Menü Bild/Testskripte. Im Code müssen Sie<br />
immer die englische Menübezeichnung, hier<br />
Image verwenden. Wie sie lautet, finden Sie<br />
heraus, indem Sie Gimp mit dem Befehl<br />
LC_MESSAGES=C gimp<br />
starten, der das Programm mit englischer<br />
Oberfläche aufruft.<br />
Anatomie eines Gimp-Skripts<br />
Sie finden das im Folgende erläuterte Beispiel-Skript,<br />
das automatisch Blumen erzeugen<br />
soll, über den Soft-Link am Ende des Artikels<br />
zum Download. Es benötigt zunächst<br />
ein Grundgerüst mit einigen allgemeinen<br />
Angaben und der Registrierung.<br />
(script-fu-register "script-fu-flower"<br />
_"_Flower Power"<br />
_"Rotates arbitrary shapes into flower-like pattern"<br />
"Susanne Schmidt "<br />
"copyright Susanne Schmidt"<br />
"06. October 2008"<br />
"RGB* GRAY*"<br />
SF-IMAGE "Image" 0<br />
SF-DRAWABLE "Drawable" 0<br />
SF-VALUE _"Set X as rotation center" "200"<br />
SF-VALUE _"Set Y as rotation center" "200"<br />
SF-VALUE _"Rotation angle (degree)" "30"<br />
SF-VALUE _"Rotation steps (number of times)" "4"<br />
SF-TOGGLE _"Merge visible layers?" FALSE<br />
)<br />
(script-fu-menu-register "script-fu-flower" —<br />
"/Testing")<br />
(define (script-fu-flower image drawable<br />
xcenter ycenter angle steps<br />
merge-visible-layer)<br />
(let* (<br />
(layer 0)<br />
(floating-selection 0)<br />
)<br />
...<br />
...<br />
)<br />
Die ersten beiden Zeilen legen den Namen<br />
des Skripts, script-fu-flower, in Gimps Skript-Registry<br />
sowie den Menünamen, Flower Power,<br />
fest. Darauf folgen einige Infos zum Einsatzzweck<br />
des Skripts, Autor, Copyright und das<br />
Erstellungs- beziehungsweise Aktualisierungsdatum.<br />
Danach kommen die ersten grafikspezifischen<br />
Angaben, beginnend mit den Farbräumen,<br />
in denen man das Skript einsetzen<br />
kann, hier RGB und Gray, sowie beide Varianten<br />
mit zusätzlichem Alphakanal, was das<br />
Sternchen als Wildcard bewirkt. Die nächsten<br />
beiden Zeilen enthalten Parameter, die<br />
Script-Fu benötigt, um zu wissen, auf welchem<br />
Bild und mit welchem Bildteil es arbeiten<br />
soll. SF-IMAGE und SF-DRAWABLE stehen für<br />
das Bild, aus dem heraus das Skript aktiviert<br />
Der Procedure Browser listet alle Skript-<br />
Fu-Bezeichnungen für Gimp-Aktionen mit<br />
ihren Parametern auf.<br />
c’t 2009, Heft 2<br />
©<br />
Copyright by Heise Zeitschriften Verlag GmbH & Co. KG. Veröffentlichung und Vervielfältigung nur mit Genehmigung des Heise Zeitschriften Verlags.<br />
165