Gimp mit Perl automatisieren
Foto-Labor
von Michael Schilli
Erschienen im Linux-Magazin
2003/09
Gimp, das GNU Image Manipulation Program, verbessert und manipuliert digitale Bilder mit anspruchsvollen Filterfunktionen. Statt immer wieder die gleichen Manöver mit der Maus auszuführen, lassen sich die Vorgänge mit Gimps Perl-Schnittstelle sogar automatisieren.
Kürzlich stolperte ich über die Webseite des Fotofachmanns Eric Jeschke, der auf[2] allerlei Tricks beschreibt, um digitale Fotos mit Gimp[1] zu verbessern. Das auf Linux frei erhältliche Fotobearbeitungsprogramm entfernt die roten Blitzaugen, reduziert eine zu starke Tiefenschärfe und Bildregionen werden nachbelichtet oder abgewedelt, wie man im Fotolaborjargon sagt, und was es der Gimmicks mehr gibt.
Perl für Gimp-Füchse
In[3] findet sich eine zwar kurze, aber einigermaßen gelungene Einführung in Gimps Perl-Schnittstelle. Marc Lehmann hat diese Erweiterung als Alternative zu Gimps Script-Fu geschrieben, sie ist ein Bestandteil der Source-Distribution. Damit kann ein Perl-Skript neue Menüs in Gimp einfügen, sonst per Maus ausgelöste Aktionen automatisieren und ungehemmt Bilddaten manipulieren.
Eines der Rezepte auf[2] erklärt, wie man ein Bild mit wenigen Handgriffen dramatischer oder traumartiger aussehen lässt. Die einzelnen Schritte sind:
-
Das Bild in Gimp laden und den »Layers«-Dialog
öffnen.
-
Die erste Ebene in eine zweite kopieren (Duplizieren-Icon am
unteren Rand des Dialogs) und den Modus »Overlay« wählen.
-
Die Farben mittels »Image | Colors | Levels« leicht
aufhellen.
-
Die durch den Overlay entstandenen Ecken per »Filters |
Blur | Gaussian Blur«-Unschärfe mit dem Radius 20 abrunden.
Der Effekt ist erstaunlich, Abbildung 1 zeigt das Original und die Gimp-Fälschung[4]. Wendet man das Verfahren jedoch ein paarmal von Hand auf verschiedene Fotos an, ermüden schnell die Finger und eine innere Stimme ruft lautstark nach einem Skript.
Das im Folgenden vorgestellte Skript »dreamify« funktioniert sowohl als Gimp-Plugin, das Gimp mit einem neuen Menüpunkt anreichert und seine Spielchen mit dem gerade geladenen Bild treibt, als auch von der Kommandozeile aus: »dreamify test.jpg« lädt das Bild im JPEG-Format, führt die eben beschriebenen Manipulationen aus, lässt anschließend die beiden Ebenen durch »Layers | Flatten Image« kollabieren und schreibt das Ergebnis im PNG-Format nach »test.png«.
In Perl geschriebene Gimp-Plugins binden zwei Module ein:
use Gimp qw(:auto);
use Gimp::Fu;
Das erste Modul-Tag »:auto« ist optional, es importiert alle verfügbaren Gimp-Bibliotheksfunktionen praktischerweise in den Namensraum des Skripts und definiert nützliche Konstanten.
Die Plugin-Skripte müssen die »register()«-Funktion aufrufen, um das Plugin in Gimp zu registrieren. Die Funktion legt fest, unter welchem Menüpunkt es hängt, und definiert, was passiert, wenn der Anwender darauf drückt, und gibt zudem eine kurze Beschreibung für die Online-Hilfe. Das Plugin-Skript sollte am Ende mit »exit main;« wieder die Kontrolle an Gimp zurückgeben, das es während des Startvorgangs ausführt und sich die vorgenommenen Einstellungen zur weiteren Verwendung merkt.

|
Abbildung 1: Original und Fälschung: Links eine triste Straßenszene in San Franciscos Stadtviertel Soma (South of Market). Rechts die gefilterte Fassung, die dem Bild eine dramatischere Note verleihen soll. Sie besteht aus zwei Ebenen, die per Overlay-Technik kombiniert sind.
|
Menü oder Kommando
Wenn Gimp das Plugin beim Hochfahren aufruft, gibt es ihm Parameter der Form
-gimp 9 8 -query 0
mit. Das nutzt Zeile 19 in »dreamify« (Listing 1) aus um festzustellen, ob der Aufruf von Gimp oder von der Kommandozeile kam. Im ersten Fall beginnt das Plugin damit, das aktuelle Bild zu bearbeiten. Von der Kommandozeile aus aufgerufen lädt das Skript hingegen erst die als Argument angegebene Datei im JPEG-Format und schreibt das Ergebnis nach getaner Arbeit als PNG-Bild auf die Festplatte.
Damit Gimp auf dem aktuellen Bild operiert, wenn der Benutzer den »Dreamify«-Eintrag im Menü auswählt, legt die Zeile 21 den String »"<Image>/Perl-Fu/Dreamify"« in der Variablen » ab. Diese Variable teilt später der »register«-Methode mit, wo sie den Eintrag aufhängen soll.
Im Falle eines Kommandozeilen-Aufrufs bleibt » auf dem in Zeile 16 gesetzten Wert »"<Toolbox>/Xtns/Mike/ Dreamify"«, denn obwohl Gimp in diesem Fall gar kein Menü anlegen muss, besteht es auf einem gültigen Eintrag. Der »<Image>«-Eintrag von oben würde hier nur eine wüste Fehlermeldung verursachen. Zeile 24 speichert den Namen der Bilddatei in ». Fehlt der Name, dann verzweigt Zeile 25 zur POD-Dokumentation und bricht das Skript ab.
| Whitepaper |
|
Daten Migration - Eine Publikation von Bloor Research
Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.
Download PDF (Registrierung erforderlich)
|
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele
Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|