#!/usr/bin/perl # Das Skript benötigt nur das Gimp-Modul, da weder die "register"-Funktion # noch irgendwelche Dialogboxen benötigt werden. Der Aufruf des Skripts # geschieht ganz einfach mit: add_label [dateiname...] # D.h. man gibt lediglich Dateinamen als Argumente, das Skript lädt # nacheinander jedes Bild und schreibt einen Text in die linke, obere Ecke. # Danach wird das Bild wieder gespeichert. use Gimp; # Der Text, der ins Bild eingefügt wird. $label = "(c)2003 Fotoagentur Möchtegern"; # Skripten, die keine Plugins sind, müssen die Schnittstelle zum Gimp # initialisieren. Am schnellsten ist es, wenn man einen Gimp-Prozeß # startet und dort den Xtns/Perl/Server startet. Allerdings müssen dann # alle Dateinamen absolute Pfade sein, da ja der Gimp-Prozeß und nicht das # Skript die Dateien lädt. Gimp::init; # Alle Argumente werden als Dateinamen behandelt und in einer Schleife # abgearbeitet. for my $path (@ARGV) { # Zuerst iwrd das Bild geladen. "file_load" benötigt den Dateinamen # zweimal, weshalb $path mit dem x-Operator "verdoppelt" wird. my $img = Gimp->file_load (($path) x 2); # Für viele Funktionen wird eine Ebene benötigt. "get_layers" liefert # eine Liste aller Ebenen des Bildes, und der Index-Operator "[0]" # wählt die erste aus. my $layer = ($img->get_layers)[0]; # Der Text soll in weiß erscheinen. Gimp->palette_set_foreground ("white"); # Die "text_fontname"-Methode hat furchtbar viele Argumente. Am besten # startet man den "Xtns/PDB Explorer" und tippt "text_fontame" ein, # um die Dokumentation der Argumente zu erhalten. # Der folgende Aufruf erzeugt eine neue schwebende Auswahl mit dem # Schriftzug, der an der Stelle +5+5 im Bild erscheint. my $text = $layer->text_fontname ( 5, 5, $label, 2, 1, 20, PIXELS, "-adobe-helvetica-medium-r-normal-*-*-*-*-*-p-*-iso8859-1" ); # Die schwebende Auswahl muß noch verankert werden. Dabei wird die # schwebende Ebene Teil der Ebene, über der sie schwebt, indem die # Pixeldaten hineinkopiert werden. $text->anchor; # Zur Sicherheit werden alle Ebenen des Bildes zu einer zusammengefaßt. # Die Methode "flatten" liefert die neu erzeugte Ebene zurück. $layer = $img->flatten; # Speichere das Bild wieder. Auch die "file_save"-Methode benötigt den # Dateinamen zweimal. $layer->file_save(($path) x 2); # Lösche das Bild aus dem Speicher, damit kein unnötiger Platz verbraucht # wird. $img->delete; }