© 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.
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!
| 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)
|
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.
|