Holgers Sammelsurium

Fotografie, Reisen, Nerdkrams

Kontaktbogen aus Lightroom exportieren

Neulich 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 verarbeiten können. Ich wollte schon immer die Möglichkeit haben so eine Art „Kontaktbogen“ direkt aus Lightroom heraus erzeugen zu können – das geht schon irgendwie mit dem Druckmodul (da kriegt dann man wohl ein PDF, was den Nutzen eher einschränkt) und vermutlich gibt es auch irgendwelche Plugins die sowas tun können… Aber selbst ist der Mann!

Ein Python-Script, welches so einen Kontaktbogen baut und aus Lightroom (oder der Shell) aufgerufen werden kann, sieht etwa so aus:

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

border = 10

images = [Image.open(image) for image in sys.argv[1:]]
num_images = len(images)
max_width = max(image.width for image in images)
max_height = max(image.height for image in images)

num_per_row = math.ceil(math.sqrt(num_images))
num_rows = math.ceil(num_images / num_per_row)
canvas_width = num_per_row * (max_width + border) + border
canvas_height = num_rows * (max_height + border) + border

canvas = Image.new('RGB', (canvas_width, canvas_height), 'white')

for i in range(num_images):
    image = images[i]
    row = i // num_per_row
    col = i % num_per_row
    x_offset = col * (max_width + border) + border
    y_offset = row * (max_height + border) + border
    x_center_offset = (max_width - image.width) // 2
    y_center_offset = (max_height - image.height) // 2
    canvas.paste(image, (x_offset + x_center_offset, y_offset + y_center_offset))

script_dir = os.path.dirname(os.path.abspath(__file__))

canvas.save(os.path.join(script_dir, 'full_size.jpg'), quality=96)

if canvas_width > 1200 or canvas_height > 1200:
    canvas.thumbnail((1200, 1200))
    canvas.save(os.path.join(script_dir, 'resized_1200x1200.jpg'), quality=96)

for image_path in sys.argv[1:]:
    os.remove(image_path)

Beim Export der Bilder empfielt es sich das TIFF-Format zu verwenden, um Verluste durch Kompression zu vermeiden, und die Bildgröße auf etwa 250 Pixel auf der längsten Kante zu beschränken, um den erzeugten Kontaktbogen nicht abartig groß werden zu lassen.


Beitrag veröffentlicht am

Kommentare

Schreibe einen Kommentar

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