Holgers Sammelsurium

Fotografie, Reisen, Nerdkrams

Shell-Scripte aus Lightroom aufrufen

Wann immer ich ein Foto auf dem Blog oder in sozialen Netzwerken poste, möchte ich, dass ein kleiner Rahmen darum herum ist. Der Grund dafür ist, dass sich das Bild optisch vom Hintergrund der Webseite abhebt. Außerdem ist es in gewisser Weise eine dezente Art des Brandings in sozialen Medien. Das Ganze sieht dann etwa so aus:

Nun ist Lightroom in solchen Sachen etwas eingeschränkt, daher muss man den Rahmen irgendwie extern hinzufügen. Vor längerer Zeit habe ich das mit einem Shell-Script namens brdr erledigt, das ein Bild als Argument erhält und mit Hilfe von mogrify einen Rahmen anfügt. brdr muss ich allerdings immer manuell über die Shell aufrufen, was ein bisschen nervt.

Jetzt habe ich gerade im Export-Modul von LR gesehen, dass ganz unten, perfekt vor neugierigen Blicken versteckt, ein „Nachbearbeitung“-Menü existiert. Dieses bietet die Möglichkeit, Bilder nach dem Export in einem externen Programm weiterverarbeiten zu lassen. Öha.

Also habe ich brdr in LR als externes Nachbearbeitungsprogramm eingetragen und ein Bild exportiert. Es passierte jedoch nichts.

Nach einigen Versuchen habe ich herausgefunden, dass in der Umgebung, in der die aufgerufenen Skripte ausgeführt werden, keine Pfade gesetzt sind. Natürlich – wie auch… Also muss mogrify einfach mit absolutem Pfad aufgerufen werden! Nun funktioniert es. Naja, fast.

Man muss nämlich Folgendes wissen: Exportiert man mehrere Fotos aus Lightroom, ruft LR das eingetragene Skript nicht wie vermutet einzeln nach dem Export jedes einzelnen Fotos auf (also brdr Dateiname), sondern ruft es nach dem Export aller Fotos auf: brdr Dateiname1 Dateiname2 Dateiname3

Daher muss eine passende for-Schleife in das Skript eingebaut werden, die diese Liste von Argumenten abarbeitet. Heureka.

Ein Minimal Viable Product eines Lightroom-Bash-Skripts sieht etwa so aus:

#!/bin/bash
########## Config ##########
MAGICK="/usr/local/bin/magick" #changeme
############################

for file in "$@"; do
    newFileName="${file%.*}".jpg

    $MAGICK "$file" \
    -bordercolor white -border 50 \
    "$newFileName"
done

Analog lassen sich so natürlich auch Python-Scripte einbinden, die ggf. komplexere Dinge tun könnten. Hier sieht das MVP so aus:

#!/path/to/whatever/python/venv/bin/python3 #changeme
from PIL import Image, ImageOps
import sys
import os

def convert(files):
    for file in files:
        new_file_name = os.path.splitext(file)[0] + ".jpg"
        with Image.open(file) as img:
            img_with_border = ImageOps.expand(img, border=50, fill='white')
            img_with_border.save(new_file_name, 'JPEG')

if __name__ == "__main__":
    convert(sys.argv[1:])

Beitrag veröffentlicht am

Kommentare

Eine Antwort zu „Shell-Scripte aus Lightroom aufrufen“

  1. […] ist mir ja aufgefallen, dass man in Lightroom Scripte einbauen kann, die nach dem Export der Bilder aufgerufen werden und die Bilder noch irgendwie weiter […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert