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 />
Gimp erstellt aus den Angaben im Kopfteil<br />
des Skripts einen einfachen Dialog zum<br />
Anpassen der Vorgabewerte.<br />
wurde und dessen bearbeitbaren Bildbereich.<br />
Ein DRAWABLE kann somit eine Ebene,<br />
ein Kanal, eine Auswahl oder eine Maske<br />
sein. Das Skript benötigt noch ein paar weitere<br />
Angaben, im Listing die Parameter SF-<br />
VALUE für Einzelwerte und SF-TOGGLE für<br />
Ja/Nein-Ankreuzkästchen.<br />
Als SF-VALUE müssen mehrere Informationen<br />
abgefragt werden: So sind die X- und Y-<br />
Koordinaten zum Setzen des Bildpunkts<br />
nötig, um den herum die Rotation (in Grad)<br />
stattfinden soll. Zusätzlich benötigt das<br />
Skript die Anzahl der Rotationsschritte, also<br />
die Anzahl Kopien der gewünschten Form.<br />
Vereinfacht gesagt: Von wo aus gesehen sollen<br />
in welchen Abständen wie viele Blütenblätter<br />
generiert werden? Der SF-TOGGLE-Knopf<br />
lässt den Nutzer entscheiden, ob alle Blütenblatt-Layer<br />
hinterher zu einer Ebene zusammengefasst<br />
werden sollen. Die im Skript<br />
eingetragenen Schritte, Winkel und der<br />
Mittelpunkt, um den herum rotiert werden<br />
soll, sind Vorgabewerte, die der Benutzer<br />
beim Aufruf des Skripts anpassen kann, denn<br />
Gimp erstellt aus all diesen Angaben automatisch<br />
einen passenden grafischen Dialog.<br />
Die Zeile nach dem Kopfteil sortiert das<br />
Blumen-Skript ins Menü Bild/Testing ein.<br />
Nach der Menüplatzierung folgt das Einlesen<br />
der Parameter aus dem Kopfteil in die Hauptfunktion<br />
script-fu-flower. Bei der Funktionsdefinition<br />
ist die Reihenfolge der Parameter aus<br />
der Registrierung wichtig – nicht deren<br />
Name. Der erste Parameter<br />
"SF-IMAGE" "Image" 0<br />
könnte in der Funktion script-fu-flower genauso<br />
gut schickesbild statt image heißen. Nach allgemeiner<br />
Konvention bezeichnen die meisten<br />
Gimp-Skripte jedoch SF-IMAGE ganz banal als<br />
image und SF-DRAWABLE als drawable oder manchmal<br />
auch layer.<br />
Die folgenden Parameter für die X- und Y-<br />
Koordinaten stecken in xcenter und ycenter. Typangaben<br />
wie int oder float sind in Scheme<br />
nicht notwendig. Der Rotationswinkel landet<br />
in angle, die Anzahl der Rotationsschritte in<br />
Auch die Auswahl von Farbe, Muster<br />
und Schriftart lässt sich mit wenigen<br />
Zeilen in ein Gimp-Skript einbinden.<br />
steps und für die letzte Nutzereingabe, eine<br />
Ja/Nein-Frage, wird die Variable merge-visiblelayers<br />
gesetzt. Damit sind die Parameter der<br />
Hauptfunktion bekanntgegeben – die Zuordnung<br />
erledigt Script-Fu automatisch. Dahinter<br />
folgen mit let definierte lokale Variablen:<br />
ein layer (Ebene) und eine floating-selection<br />
(schwebende Auswahl).<br />
Die drei Schritte Registrierung, Menüeintrag<br />
und Hauptfunktion enthält jedes<br />
Gimp-Skript; manchmal mit nur zwei bis drei<br />
Parametern, manchmal mit zehn und mehr<br />
Nutzerangaben, die das Skript berücksichtigt.<br />
Außer SF-VALUE und SF-TOGGLE gibt es zum<br />
Beispiel noch SF-COLOR für eine Farbauswahl,<br />
SF-FONT für die Schriftart, SF-PATTERN für Musterfüllungen<br />
und einige mehr.<br />
Innereien<br />
Ist das Grundgerüst eines Gimp-Skripts erstellt,<br />
müssen Sie sich überlegen, welche<br />
Schritte es in genau welcher Reihenfolge abarbeiten<br />
soll. Für das Erstellen und rotierte<br />
Platzieren von Blütenblättern benötigen Sie<br />
eine Grundform, die zum einen kopiert und<br />
dann um eine bestimmte Gradzahl rotiert<br />
wird. Dafür verwendet man die Script-Fu Prozedur<br />
gimp-drawable-transform-rotate, die auf dem<br />
aktuellen drawable arbeitet und eine „floating<br />
selection“ zurückliefert. Die schwebende<br />
Auswahl muss in eine neue Ebene umgewandelt<br />
werden, die dann zur aktiven gemacht<br />
und wieder kopiert wird. Das Ganze<br />
soll das Skript so oft wiederholen, bis ein<br />
Kreis in gleichmäßigen Abständen mit Blütenblättern<br />
gefüllt ist.<br />
Die Anzahl der Rotationsschritte festzulegen<br />
ist mit Hilfe einer Schleife ganz einfach:<br />
(while (> steps 0)<br />
(Anweisungen zum Rotieren)<br />
(set! steps (- steps 1))<br />
)<br />
Die Variable steps bezieht das Skript aus den<br />
Nutzerangaben im Dialog. Die Schleife läuft<br />
so lange, wie steps größer als 0 ist, wobei in<br />
jedem Durchlauf 1 vom Ausgangswert abgezogen<br />
wird. Innerhalb der Schleife platzieren<br />
Sie die Schritte zum Kopieren, Rotieren und<br />
Auswählen:<br />
(set! layer (car (gimp-image-get-active-layer image)))<br />
(gimp-edit-copy drawable)<br />
(gimp-edit-paste drawable FALSE)<br />
Zunächst wird die Variable layer auf den aktuell<br />
aktiven Layer im Bild gesetzt. Dabei ist<br />
es egal, ob die Form ausgewählt ist oder<br />
nicht. Weil gimp-drawable-transform-rotate die Rotationsfläche<br />
nimmt, rotiert und zu einer<br />
schwebenden Auswahl macht, muss man zunächst<br />
sicherstellen, dass die Grundform an<br />
ihrem Platz bleibt. Dazu genügt ein einfaches<br />
gimp-edit-copy und gimp-edit-paste. Das gimpedit-paste<br />
enthält den zusätzliche Parameter<br />
FALSE, der bedeutet, dass die Auswahl nicht<br />
ausgeschnitten, sondern an die gleiche Stelle<br />
zurückkopiert wird. Nachdem das Skript die<br />
Kopie erstellt hat, folgt die Rotation:<br />
(gimp-drawable-transform-rotate drawable<br />
angle<br />
FALSE<br />
xcenter ycenter<br />
TRANSFORM-FORWARD<br />
3<br />
FALSE<br />
3<br />
TRANSFORM-RESIZE-ADJUST)<br />
Wie einige andere Gimp-Prozeduren auch,<br />
erhält gimp-drawable-transform-rotate ziemlich viele<br />
Parameter, deren Bedeutung Sie im Script-<br />
Fu-Browser erklärt finden. Die Prozedur bekommt<br />
das aktive drawable mit der Gradzahl<br />
angle übergeben. Das Skript setzt mit xcenter<br />
und ycenter den Mittelpunkt der Rotation<br />
selbst, sodass Sie ein FALSE für den Parameter<br />
auto-center verwenden, der das Zentrum des<br />
drawable als Rotationsmitte benutzen würde.<br />
Danach folgt TRANSFORM-FORWARD – oder alternativ<br />
TRANSFORM-BACKWARD. Die nächsten drei<br />
Parameter 3, FALSE und nochmal 3 betreffen<br />
Interpolation, Supersampling und die Rekursionstiefe<br />
für Supersampling. Der letzte Parameter<br />
gibt an, dass die Rotation nur in der<br />
Größe angepasst werden soll. Danach entsteht<br />
automatisch eine schwebende Auswahl,<br />
die Sie in eine neue Ebene umwandeln:<br />
(set! floating-selection (car (gimp-image-get-floating-—<br />
sel image)))<br />
(gimp-floating-sel-to-layer floating-selection)<br />
Die schwebende Auswahl schnappen Sie<br />
sich mit der car-Anweisung und stecken sie in<br />
die Variable floating-selection. Danach ruft das<br />
Skript gimp-floating-sel-to-layer auf und wandelt<br />
damit die schwebende-Auswahl in eine eigene<br />
Ebene um. Danach müssen Sie nur noch<br />
die neue Ebene zur aktiven machen und zurechtschneiden,<br />
damit ihre Größe mit der Rotationsform<br />
zusammenpasst:<br />
(gimp-image-set-active-layer image layer)<br />
(plug-in-autocrop-layer 1 image layer)<br />
166 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.