Bilder mit Lua exportieren
Bis jetzt haben wir gelernt Lua dazu zu nutzen, um darktable an unseren Arbeitsablauf anzupassen. Nun möchten wir schauen, wie wir Lua dazu nutzen, um Bilder einfach an einen Online Service zu exportieren. Wenn du Bilder via die Kommandozeile an einen Bilder-Service hochladen kannst, dann kannst Lua dazu nutzen, um das in die Schnittstelle von darktable zu integrieren.
In diesem nächsten Beispiel verwenden wir Lua, um über scp
zu exportieren. Ein neuer Speicher erscheint in der Benutzeroberfläche von darktable, welcher Bilder über den Kopiermechanismus von ssh
an ein entferntes Ziel exportiert.
darktable = require "darktable"
darktable.preferences.register("scp_export","export_path",
"string","target SCP path",
"Complete path to copy to. Can include user and hostname","")
darktable.register_storage("scp_export","Export via scp",
function( storage, image, format, filename,
number, total, high_quality, extra_data)
if not darktable.control.execute("scp "..filename.." "..
darktable.preferences.read("scp_export",
"export_path","string")) then
darktable.print_error("scp failed for "..tostring(image))
end
end)
darktable.preferences.register
will add a new preference to darktable’s preferences menu, scp_export
and export_path
allow us to uniquely identify our preference. These fields are reused when we read the value of the preference. The string
field tells the lua engine that the preference is a string. It could also be an integer, a filename or any of the types detailed in the API manual relating to types_lua_pref_type
. We then have the label for the preference in the preference menu, the tooltip when hovering over the value and a default value.
darktable.register_storage
ist der Aufruf, der wirklich einen neuen Speichertypen registriert. Das erste Argument ist ein Name für den Speicher Typ, das zweite ist das Label, das in der UI angezeigt wird und das letzte ist eine Funktion jedes Bild aufzurufen. Diese Funktion hat viele Parameter, aber filename
ist der einzige, den wir für dieses Beispiel nutzen. Es beinhaltet den Namen einer temporären Datei, wohin das Bild mit darktable exportiert wurde.
Dieser Code wird funktionieren, aber er hat sehr viele Nachteile. Das ist eben nur ein einfaches Beispiel:
-
Wir nutzen Präferenzen, um den Zielpfad zu konfigurieren. Es wäre besser ein Element hinzuzufügen, um den Export UI in darktable. Wie das gemacht wird, werden wir im nächsten Abschnitt detaillieren.
-
Wir überprüfen den returnierten Wert von
scp
. Dieses Kommando könnte nicht funktionieren, insbesondere, wenn der Nutzer die Präferenz nicht korrekt gesetzt hat. -
Dieses Skript kann den Input des Nutzers nicht lesen. Das remote
scp
muss passwort-leere Kopien nutzen.scp
können nicht leicht mit einem Passwort versehen werden, also lassen wir es dabei bewenden. -
Es wird keine Meldung gezeigt, wenn das Beispiel einmal durchgeführt ist, nur der Fortschrittsbalken unten links zeigt an, dass der Job fertig ist.
-
We use
darktable.control.execute
to call an external program. The normalos.execute
would block other lua codes from happening.
translations
- English: exporting images with lua
- Français: Exporter des images avec Lua
- Español: exportar imágenes con lua
- Italian: esportare immagini con lua
- Polish: eksport zdjęć przy użyciu lua
- Português: exportar imagens com lua
- Ukrainian: Експортування зображень за допомогою Lua
- Dutch: afbeeldingen exporteren met lua