23.04.2014 Aufrufe

Kompakte Notebooks Kompakte Notebooks - Wuala

Kompakte Notebooks Kompakte Notebooks - Wuala

Kompakte Notebooks Kompakte Notebooks - Wuala

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!