Mit Lightroom Bildern automatisch einen Rahmen hinzufügen

Posted on

Update

Es gibt eine neue Beschreibung zum Thema. Dabei wird ein anderer Weg gewählt. Siehe https://oelpke.de/wp/2020/12/lightroom-postprocessing-mit-bash-scripten/

Vorweg…

Der folgende Artikel ist kein Kochrezept, welches so 1 zu 1 umsetzbar ist. Er dient lediglich als Notizzettel und Ausgangspunkt für Lösungsmöglichkeiten.

Ausgangssituation

Zur Zeit bin ich ein Freund von weißen Rahmen um meine Fotos. Lightroom bietet da nichts ab Werk. Eine Lösung ist. z.B. das Bild in SilverEfex oder ColorEfex zu öffnen und dort einen Rahmen hinzufügen. Dies hat leider den Effekt, dass das Bild beschnitten wird.

Ein anderer Weg besteht darin, dass Bild in Photoshop oder Affinity Photo zu öffnen und einen Rahmen hinzuzufügen, in dem man z.B. den Canvas (die „Leinwand“) vergrößert und eine weiße Füllebene hinter das Bild legt.

Alle genannten Verfahren haben den Nachteil, dass man eine externe Applikation starten muss und anschließend Schritte manuell oder halbautomatisch durchführen muss. Da ich nun ein wenig „faul“ bin, habe ich mir überlegt, wie man den Prozess möglichst gut automatisieren kann.

Automatisierung

Zunächst brauchte ich ein Werkzeug, dass ein Bild entsprechend anpassen kann. Also in meinem Fall einen Rahmen um ein Bild legt ohne das Bild zu beschneiden. Letztlich wird das Bild um die Rahmenbreite größer. Nach einiger Recherche bin ich auf ImageMagick gestoßen. Damit lässt sich mein Wunsch erfüllen. An der Kommandozeile des Macs sieht es dann in etwa so aus:

convert /path/to/image.jpg \ 
-bordercolor White \
-border 100x100 \
/path/to/outputimage.jpg

Mein erster Schritt war ein Script zu schreiben, welches temporär die Pfade und Umgebungsvariablen für ImageMagick setzt und mein Bild mit einem Rahmen von 100 Pixeln versieht. Die Dateinamen für Ein- und Ausgabe werden als Argumente an das Script übergeben.
Hinweis: imagemagick als Pfad liegt hier im usr Verzeichnis. Bei Bedarf anpassen!

#!/bin/sh 
# set the environment variable for ImageMagick
export MAGICK_HOME="$HOME/imagemagick"
export PATH="$MAGICK_HOME/bin:$PATH"
export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib/"

# Add a border to the image
convert $1 \
-bordercolor White \
-border 100x100 \
$2

Lightroom Integration

Als nächstes brauchte es eine Möglichkeit, das ganze Verfahren in Lightroom zu integrieren. Die Variante über das „Bild->Bearbeiten in…“ Menü zu lösen, schien mir am naheliegensten. Doch ein Script lässt sich nicht so ohne weiteres entsprechend in Lightroom einbinden. Zumindest kenne ich aktuell keine Lösung. Es musste ein Programm her. Nach kurzer Recherche bin ich auf diesen Beitrag bei Stackoverflow gestoßen:
https://stackoverflow.com/questions/30792569/converting-a-shell-script-into-a-app-file
Mein Script habe ich dann noch so angepasst, dass Ein- und Ausgabedatei identisch sind. Wenn man nun in Lightroom „Kopie mit Lightroom-Anpassungen bearbeiten“ auswählt, wird diese Kopie direkt an das Script übergeben und die Änderung, sprich der Rahmen, ist sofort in Lightroom sichtbar.

Lightroom Dialog zur externen Bearbeitung

Und das ist das Ergebnis:

Vorher Nachher

Nächste Schritte

  • Flexible Rahmenbreite
  • Rahmenbreite abhängig von Bildgröße
  • Rahmenfarbe auswählbar (wenigstens Schwarz oder Weiß)

Alternativ wäre auch denkbar, dass bei einem Export alle Bilder an das Script übergeben werden und Kopien mit Rahmen erstellt und in ein entsprechendes Verzeichnis gespeichert werden.

Nachtrag (2019-04-27)

Bei der weiteren Recherche bin ich in der Zwischenzeit darüber gestolpert, dass Apple die Aufgabenstellung als Beispiel bei der AppleScript Doku anführt:


https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/ManipulateImages.html#//apple_ref/doc/uid/TP40016239-CH20-SW1

Also noch ein alternativer Lösungsansatz, der einen Blick lohnt…