| Titelblatt | Lektion 1 | Lektion 2 | Lektion 3 | Lektion 4 | Lektion 5 | Lektion 6 | Referenzen |
|---|---|---|---|---|---|---|---|
| Erster Anlauf | Variable und Funktionen | Immer wieder Listen | Das erste Gerippe | Etwas mehr Fleisch | Noch etwas Salz an die Suppe |
Na? Frisch erholt und gestärkt? Kräftig in die Hände gespuckt. Wir wollen uns jetzt an Script-Fu wagen.
Eine der häufigsten Operationen in GIMP ist sicherlich die Generierung eines Textes, zum Beispiel für eine Web-Seite oder ein Logo oder weiß der Pinguin was. Meistens weiß man jedoch nicht, wie groß die Anfangsgröße gewählt werden soll. Oder wieviel Platz um den Text herum benötigt wird. Man entwickelt erst im Laufe der Zeit das entsprechende Gefühl, welcher Font oder welche Schriftgröße die geeignete Wahl ist.
Als Meister aller Klassen in Sachen Script-Fu, oder auch als Anwärter darauf, kann dies problemlos und relativ schnell mit Hilfe von Script-Fu umgesetzt werden.
Wir werden deshalb als praktisches Beispiel ein Script entwickeln, welches ein Bild mit einem Text erzeugt und dem Anwender genügend Freiheiten läßt bei der Wahl des Fonts, der Schriftgröße, der Text-Farbe und den freizuhaltenden Platz, der den Text umgibt.
Bis zu diesem Zeitpunkt haben wir immer im Fenster der Script-Fu-Console gearbeitet. Jetzt wird es Zeit auf das Editieren des Script-Fu-Programms außerhalb umzuschalten.
Wohin das Script-Fu-Programm abgelegt werden soll, ist eine Frage des Geschmacks oder auch nicht. Falls Sie Zugriff zum Standard-Verzeichnis von GIMP besitzen, können Sie das Script dort plazieren. Ich bevorzuge jedoch meine persönlichen Scripte auch in meinem eigenen Verzeichnis abzulegen, und zwar abseits vom Standard-Systemverzeichnisses des Programms.
Unter Linux ist es im Speziellen das Verzeichnis ".gimp" in meinem HOME-Verzeichnis. Darin sollte sich ein Verzeichnis mit dem Namen "scripts" befinden. GIMP schaut automatisch in diesem Verzeichnis nach Scripten, um diese beim Start in die Script-Fu-Datenbasis einzubauen. Und dieses Verzeichnis ist deshalb wirklich zu empfehlen.
Jeder Script-Fu-Text besteht mindestens aus einer Funktion, welches die Hauptfunktion des Scriptes darstellt.
Jedes Script-Fu-Programm muß in der prozeduralen Datenbasis registriert werden, um innerhalb von GIMP damit zu arbeiten.
Also definieren wir unsere Hauptfunktion für unsere Text-Box zuerst:
(define (script-fu-text-box inText inFont inFontSize inTextColor) )
Mit Hilfe unsere bisherigen Kenntnisse in Sachen Scheme können wir sehr schnell diese Definition analysieren. Wir haben eine neue Funktion mit dem Namen "script-fu-text-box" definiert. Sie enthält vier Paramter, die später mit einem Text, einem Font, einer Schriftgröße und einer Text-Farbe korrespondieren. Die Funktion hat zur Zeit keine weiteren Anweisungen, ist also leer. So weit, so gut - nichts Neues und schon gar nichts Aufregendes.
Die Namenskonventionen von Scheme scheinen Namen zu bevorzugen, die aus kleinen Buchstaben und Trennzeichen bestehen. Ich (Michael Terry und auch der Autor dieser Übersetzung) weichen bei der Namensvergabe bei den Parametern und Variablen von diesem Prinzip ab. Ich bevorzuge mehr beschreibende Namen und optisch trennende Groß- und Kleinschreibung. Der englischsprachige Autor bevorzugt außerdem den Präfix "in" für alle Eingabeparameterm und den Präfix "the" für Variable innerhalb des Scriptes. Es gibt keinen Grund, daß wir nicht auch so verfahren.
Es ist außerdem eine vernünftige Namenskonvention innerhalb der GIMP-Datenbasis, die Script-Fu-Texte mit "script-fu-" beginnen zu lassen. Das hat den Vorteil, daß man diese Texte schnell innerhalb aller Einträge finden kann und sie sich von den anderen Plug-ins unterscheiden, wenn sie aufgelistet werden.
Nun wollen wir unsere Funktion in GIMP registrieren lassen. In der Registrationsphase von GIMP sucht GIMP nach diesem Part, um die entsprechenden Vermerke in der Datenbasis vorzunehmen. Diese Zeilen folgen nach der Definition der Funktion.
(script-fu-register
"script-fu-text-box"
"<Toolbox>/Xtns/Script-Fu/Test/Text Box..."
"Creates a simple text box, sized to fit around the user's choice of text, font, font size, and color."
"Michael Terry"
"copyright 1997, Michael Terry"
"October 27, 1997"
""
SF-STRING "Text:" "Text Box"
SF-FONT "Font:" "-*-Roostheavy-*-r-*-*-24-*-*-*-p-*-*-*"
SF-VALUE "Font size:" "45"
SF-COLOR "Color:" '(0 0 0)
)
Um einen eigenen Script-Fu-Text im GIMP registrieren zu lassen, rufen wird die Funktion "script-fu-register" auf. Diese Funktion hat sieben unterschiedliche Parameter:
Param-Typ "Prompt-Text" "Standardwert"
Hier ist eine Tabelle mit den möglichen Parametern:
| Param-Typ | Kurzbeschreibung | Beispiele |
|---|---|---|
SF-VALUE |
Beschreibt eine numerische Eingabe | SF-VALUE "Blur Radius:" "5" |
SF-STRING |
Beschreibt eine Text-Eingabe | SF-TEXT "Text:" "The GIMP" |
SF-FONT |
Beschreibt eine Font-Auswahl. Es erscheint eine Schaltfläche, die das Schrift-Auswahl-Fenster von GIMP aktiviert. Die Font-Notation erfolgt nach den üblichen Regeln der Font-Beschreibung unter X11. Eine wertvolle Hilfe zur Ermittlung einer korrekten Font-Syntax ist das Programm "xfontsel". | SF-FONT "Font:" "-*-baskerville-*-*-*-*-30-*-*-*-*-*-*-*" |
SF-ADJUSTMENT |
SF-ADJUSTMENT "Font Size (pixels):" '(22 2 100 1 1 0 1) |
|
SF-COLOR |
Zeigt an, daß eine Farbeingabe an dieser Stelle notwendig ist. Es erscheint eine Schaltfläche zur Farbwahl. | SF-COLOR "Color:" '(0 0 0) |
SF-TOGGLE |
Beschreibt einen logischen Parameter, der durch eine Toggle-Box angezeigt wird. | SF-TOGGLE "Resize?" TRUE |
SF-IMAGE |
Falls das Script ein bereits geöffnetes Bild benötigt, ist dieser Parameter zu vereinbaren. Dabei ist zu beachten, das dieser Parameter als erster Parameter in der Parameterliste der Funktion steht. GIMP trägt automatisch alle aktiven Bilder ein. | SF-IMAGE "The image" 0 |
SF-DRAWABLE |
Arbeitet das Script mit bereits geöffneten Scripten (SF-IMAGE), ist zusätzlich dieser Parameter anzugeben. Er beschreibt den Namen einer Ebene (layer). GIMP reicht ihn als Referenz weiter. | SF-DRAWABLE "The layer" 0 |
SF-FILENAME |
Eingabe eines Dateinamens | SF-FILENAME "Filename:" "afile" |
SF-PATTERN |
Eingabe eines Musters (Pattern) | SF-PATTERN "Pattern:" "Wood" |
SF-GRADIENT |
Eingabe eines Verlaufes (Gradient) | SF-GRADIENT "Blend:" "German_flag_smooth" |
Dieses Script speichern wir im Verzeichnis ".gimp/scripts" als eine Textdatei mit dem Suffix ".scm" ab. Dieses Script muß sowohl die "define"- als auch die "register"-Anweisung enthalten. Ist dies geschehen, wählen wir in GIMP die Menüpunkte "Xtns->Script-Fu->Refresh" an.
![]() |
Danach sollte sich unser Script-Gerippe bereits aufrufen lassen | ![]() |
Nach dem Aufruf sollte folgendes GIMP-Fenster erscheinen:

Allerdings können wir noch nicht viel damit anfangen. Es ist nur ein Script-Gerippe. Ein Aufruf ist wenig erfolgreich, da die eigentliche Bearbeitungsfunktion von uns noch nicht kodiert wurde. Wir sehen uns aber noch den Eintrag in der GIMP-Datenbasis an.
![]() |
Es sollte folgender Eintrag sichtbar gemacht werden können. | ![]() |
Wenn das keine geballte Ladung an Information war. Legen wir eine Verschnaufpause ein. Wir treffen uns nach der Pause. Also bis bald.
| Titelblatt | Lektion 1 | Lektion 2 | Lektion 3 | Lektion 4 | Lektion 5 | Lektion 6 | Referenzen |
|---|---|---|---|---|---|---|---|
| Erster Anlauf | Variable und Funktionen | Immer wieder Listen | Das erste Gerippe | Etwas mehr Fleisch | Noch etwas Salz an die Suppe |