Darktable Praxis: Mehrere Stile mit Lua anwenden

Das Anlegen, Anwenden und Verwalten von Stilen ist ja im Handbuch recht gut beschrieben und es gibt im Netz bereits viele Stile zum runterladen (http://dtstyle.net). Das Problem was man jedoch hat ist, dass man oft nicht weiß, wie welcher Stil auf ein eigenes Bild wirkt und welchen man dafür am besten verwendet. Von vielen Programmen (zB Silver FX) kennt man die Vorgehensweise, dass sie eine Vorschau eines Bildes in verschiedenen Stilen zeigen und der Benutzer einen auswählen kann.

Darktable bietet das nicht, aber mit etwas Organisation kann man diese Arbeitsweise trotzdem übernehmen.


Schritt 1 – Aufteilen der Stile in Gruppen

Leider unterstützt darktable das Aufteilen der Stile in verschiedene Gruppen nicht. Es ist jedoch möglich, dass man die Stile über den Namen gruppiert. So beginnen bei mir beispielsweise alle Stile, die eine Konvertierung in Schwarz-Weiß vornehmen mit “SW -“.

Wenn man dann in der Stile-Box dieses Kürzel eingibt, dann sieht man nur noch diese Stile. (1)

Stile1


Schritt 2 – Anwenden der Stile

Um jetzt eine Vorschau für ein Bild in jedem Schwarz-Weiß-Stil zu bekommen, können in der Stile-Box alle Stile nacheinander angeklickt werden (2). Wichtig ist dabei, dass die Checkbox “Duplikat erzeugen” (3) angekreuzt ist, damit man jedesmal eine neue Version des Bildes bekommt und das Original nicht überschrieben wird.

Jetzt kann man die Bilder begutachten und sich für eines oder mehrere entscheiden. Dazu kann es sinnvoll sein, die Größe von den Thumbnails zu erhöhen. Wenn man wissen möchte, wie der Stil heißt, der angewendet wurde, dann kann man das in der Tagging-Box sehen.

Die Versionen, die man nicht möchte, werden durch CTRL-Klick markiert und können danach mit der “Entf”-Taste gelöscht werden.

Stile2


Hilfe von Lua

Ich habe mich am Wochenende etwas mit der Lua-Schnittstelle beschäftigt. Auch wenn sie noch nicht ausgereift ist, ist das Ganze doch recht brauchbar.

Statt die einzelnen Stile durch zu klicken, kann man die Versionen durch ein Lua-Script erzeugen lassen, dass man auf eine Taste legt.

Dazu ist dieses Script in die Datei ~/.config/darktable/luarc zu kopieren und darktable neu zu starten.

dt = require "darktable"

function string.starts(String,Start)
   return string.sub(String,1,string.len(Start))==Start
end

--
-- create an duplicate of selected image for each style witch starts with start_string
--
local function create_with_styles(start_string)
	local sel_images = dt.gui.selection()
	local new_image
	local org_style

	-- for each selected image
	for _,image in ipairs(sel_images) do
		-- get the style of the image; duplicate will not copy it
		org_style = dt.styles.create(image, "org_style", "temporary org_style")
		-- for each style with starts with start_string
		for _,style in ipairs(dt.styles) do	
			if string.starts(style.name, start_string) then
				-- create a duplicate
				new_image = dt.database.duplicate(image);
				-- apply the orignal style
				dt.styles.apply(org_style, new_image)
				-- apply the found style
				dt.styles.apply(style, new_image)
			end	
		end
		-- forget the orignal style
		dt.styles.delete(org_style)
	end
end

--
-- create an duplicate of selected image for each style witch starts with "SW -"
--
local function create_sw(event, shortcut)
	create_with_styles("SW -")
end	

dt.register_event("shortcut", create_sw, "Create Duplicates with SW- Styles")

Danach kann man ihm in den Einstellungen eine Taste zuweisen.

Stile4

Wenn man für weitere Stil-Gruppen eine Taste belegen will, muss man einfach nur den unteren Teil duplizieren und SW durch etwas anderes ersetzen.
Also wenn beispielsweise für alle Stile, die mit “COL -” anfangen:

--
-- create an duplicate of selected image for each style witch starts with "COL -"
--
local function create_col(event, shortcut)
	create_with_styles("COL -")
end	

dt.register_event("shortcut", create_col, "Create Duplicates with COL- Styles")

Zwei Probleme hat das Script aber, die ich nicht verheimlichen will. Sie resultieren daraus, dass beim Duplizieren nicht alle Eigenschaften mit kopiert werden. Deshalb werden diese in einen eigenen Stil (“org_style”) kopiert, der dann auf das neue Image angewendet wird und wieder gelöscht wird. Leider funktioniert auch das Löschen nicht so richtig, so dass man ab der zweiten Anwendung die Meldung “Stil-Datei für ‘org_style’ existiert bereits” bekommt. Das ist jedoch nur eine Warnung und hat ansonsten keine Auswirkungen.

Das zweite Problem ist, dass beim Anlegen des “org_style” die Sortierung des Verlaufstapels verändert wird. An sich ist das kein Problem. Wenn man jedoch mehrfach “Zuschneiden”” verwendet hat, kann es zu seltsamen Effekten kommen. Um diese zu vermeiden, sollte man, wenn man schon einige Einstellungen an dem Original-Bild vorgenommen hat, den Verlaufstapel vorher zusammenfassen. Leider gibt des dafür keine Lua Funktion und man muss dies von Hand erledigen.

Scroll to top