Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2009  »  04  »  Alter geht vor Schönheit  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

© Andybahn, Photocase.com

Perl automatisiert Bildverarbeitung mit Gimp

Alter geht vor Schönheit

von Michael Schilli
Erschienen im Linux-Magazin 2009/04

Das Fotomanipulationsprogramm Gimp hilft nicht nur dabei, Fotos optisch aufzubrezeln, es beherrscht auch den umgekehrten Fall: Aus brandneuen Digitalbildern macht es nostalgisch angehauchte Fotos mit dem typischen Gelbstich.

100 Jahre alte Schwarz-Weiß-Bilder fallen durch eine gelbliche Tönung auf. Besonders an den ursprünglich schwarzen Stellen hat der Zahn der Zeit genagt und sie braun gefärbt, aber auch die helleren Töne weisen einen leichten Gelbstich auf. Als ich vor Kurzem aus meinem Domizil, dem bunten Amerika, einen Abstecher in meine alte Heimat Deutschland unternahm, kam mir die Idee, einige auf der Reise mit der Digitalkamera aufgenommene Farbbilder (Abbildung 1) spaßeshalber in Schwarz-Weiß umzuwandeln und künstlich zu altern (Abbildung 2). Die so genannte Sepia-Tönung alter Fotografien rührt laut Wikipedia [4] von einem Pigment her, das sich ab dem späten 19. Jahrhundert in Fotografien findet. Man gewann es aus einem im Ärmelkanal heimischen Fisch, der mit lateinischem Namen Sepia officinalis heißt.


Abbildung 1: Dies ist das mit einer modernen Digitalkamera aufgenommene Originalfoto, das der hier entwickelte Filter verfremden soll.


Abbildung 2: Ergebnis: Das mit Gimp künstlich gealterte Schwarz-Weiß-Foto mit Gelbstich. Dank des Skripts lassen sich ganze Bildserien so bearbeiten.

Neue Fotos - fischgelb

Um diesen Effekt auch bei neuen Digitalaufnahmen zu erzielen, versetzt der Bildkünstler vor allem die dunklen Teile eines Bildes mit einem hellen Gelb-Braun-Ton (Abbildung 3). Die Bildteile mittlerer Helligkeit sind weniger betroffen und helle Stellen fast überhaupt nicht.


Abbildung 3: Sepia ist ein heller Gelb-Braun-Ton mit dem RGB-Wert [162,138,101]. Der Name stammt von einem Fisch, aus dem man ein Pigment gewann.

Es reicht also nicht, einem Bild die Farbinformationen zu entziehen und es anschließend gelblich einzufärben - der täuschend nachgemachte Effekt erfordert subtilere Maßnahmen. Eric Jeschke hat auf [3] eine Reihe von Gimp-Operationen zusammengestellt, die verblüffend echt aussehende Vorkriegsbilder produzieren. Mit dem Perl-Modul »Gimp« vom CPAN lassen sich die Einzelschritte in ein Perl-Skript packen, das der Nostalgiefreund ohne nennenswerten Arbeitsaufwand auf ganze Fotoreihen loslassen kann.

Durch die Brust ins Auge

Das Skript »sepiafy« in Listing 1 nimmt auf der Kommandozeile eine Bilddatei entgegen, unterwirft sie einer Reihe von Transformationen und spuckt anschließend ein künstlich gealtertes Schwarz-Weiß-Bild mit Gelbstich aus. Der Aufruf »sepiafy bild.jpg« erzeugt die Ergebnisdatei »bild-sepia.jpg«. Die lässt sich anschließend mit einem Image-Viewer wie zum Beispiel »eog« (Eye of Gnome, [7]) betrachten.

Listing 1:
»sepiafy«

01 #!/usr/bin/perl
02 use warnings;
03 use strict;
04
05 use Gimp qw(:auto);
06 use Gimp::Fu;
07 use Getopt::Std;
08 use Log::Log4perl qw(:easy);
09
10 Log::Log4perl->easy_init($DEBUG);
11 DEBUG "Starting up";
12
13 my $menu =
14     "<Toolbox>/Xtns/Perl-Fu/Sepiafy";
15
16 my $file = $ARGV[0];
17 die "No file"
18       unless defined $file;
19
20 register(
21   "perl_fu_sepiafy",   # Name
22   "Sepia Toning",      # Explain
23   "",                  # Help
24   "",                  # Author
25   "",                  # Copyright
26   "",                  # Date
27   $menu,               # Menu
28   "*",                 # Images accepted
29   [ undef ],           # No parameters
30   \&sepiafy            # Function
31 );
32
33 exit main();
34
35 ###########################################
36 sub sepiafy {
37 ###########################################
38
39   my $img = gimp_file_load(
40       RUN_NONINTERACTIVE, $file, $file);
41
42   die "Can't load $file" unless $img;
43
44   my $layer = image_get_active_layer($img);
45
46   DEBUG "Desaturate";
47   $layer->desaturate_full(2);
48     # 2: Average
49
50   my $sepia_mask = $layer->layer_copy(1);
51     # 1: Add Alpha Channel
52   $sepia_mask->layer_set_mode(COLOR_MODE);
53
54     # Insert layer above active layer
55   $img->image_add_layer($sepia_mask, -1);
56
57   gimp_context_set_foreground(
58                        [162, 138, 101] );
59   $sepia_mask->drawable_fill(0);
60     # 0: FOREGROUND-FILL
61
62   DEBUG "Adding layer mask";
63   my $layer_mask =
64          $sepia_mask->layer_create_mask(0);
65            # 0: White mask
66   $sepia_mask->layer_add_mask(
67                              $layer_mask );
68
69   $layer->edit_copy();
70
71   my $float = $layer_mask->edit_paste(0);
72     # 0: Clear selection 1: Paste behind it
73   $float->invert();
74   $float->floating_sel_anchor();
75
76   DEBUG "Flattening image";
77   $img->flatten();
78   $layer = $img->get_active_layer;
79
80   $layer->curves_spline(HISTOGRAM_VALUE,
81                   [0,0, 58, 36, 255, 255]);
82
83   $file =~ s/./-sepia./g;
84   DEBUG "Saving $file";
85   gimp_file_save(
86     RUN_NONINTERACTIVE,
87     $img,
88     $layer,
89     $file,
90     $file);
91
92   return $img;
93 }

Wie schon einmal in [5] erläutert, verlangen Gimp-Skripte zunächst einige bürokratische Verwaltungsmaßnahmen, damit sie Kontakt mit dem Bildverarbeitungsprogramm aufnehmen können. Die in Zeile 20 aufgerufene Funktion »register()« definiert einen Namen, einen Menü-Eintrag und noch weitere, in der Kommandozeilenversion eigentlich unnütze Angaben wie Autor und Hilfetext. Die Zeile 33 ruft schließlich mit »main()« das Gimp-Programm auf, das wiederum, wegen des Eintrags in Zeile 30, die ab Zeile 36 definierte Funktion »sepiafy()« startet. Also von hinten durch die Brust direkt ins Auge!

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Farbenspiel Ein Perl-Skript als Retuscheur
Die Tickets, bitte! OTRS für Produktivsysteme selbst anpassen
Foto-Labor Gimp mit Perl automatisieren
Schneckenpost Spamschleudern im SMTP-Verkehr durch Wartezeiten und Stottern austricksen
Alles im Blick Systemmonitore für den Desktop
Zauberlehrling Automatische Bildbearbeitung mit Imagemagick
Whitepaper
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
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)
Kommentare (0)