eksport zdjęć przy użyciu lua
Do tej pory nauczyliśmy się używać lua do adaptacji darktable w naszym systemie pracy. Zobaczmy teraz, jak zaprząc lua do łatwego eksportu zdjęć do serwisu online. Jeśli jesteś w stanie przesłać plik na serwer przy użyciu linii poleceń, możesz użyć lua do automatyzacji tego z poziomu interfejsu użytkownika darktable.
W tym przykładzie użyjemy lua do eksportu poprzez scp
. W interfejsie darktable pojawi się nowy typ miejsca docelowego, który wyeksportuje zdjęcia do zdalnej lokacji poprzez mechanizm kopiowania w ssh
.
darktable = require "darktable"
darktable.preferences.register("scp_export","export_path",
"string","docelowa sciezka SCP",
"Kompletna sciezka do skopiowania. Moze zawierac uzytkownika i hostname","")
darktable.register_storage("scp_export","Eksport 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("Blad scp: "..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
jest wywołaniem, rejestrującym nowe miejsce zapisu danych. Pierwszy argument to nazwa miejsca, drugi to etykieta, wyświetlana w interfejsie, a trzeci to funkcja, wywoływana na każdym zdjęciu. Funkcja posiada wiele parametrów, ale w przykładzie użyjemy tylko filename
. Zawiera on nazwę pliku tymczasowego, do którego zdjęcie zostało wyeksportowane przez silnik darktable.
Kod działa, ale ma kilka ograniczeń. W końcu to tylko prosty przykład:
-
Dla określenia ścieżki docelowej użyliśmy preferencji. Lepiej byłoby dodać element do eksportowego interfejsu w darktable. Omówimy to dokładniej w dalszej części.
-
Nie sprawdziliśmy wartości zwracanej z
scp
. Komenda mogła zakończyć się błędem, na przykład jeśli użytkownik nie ustawił poprawnie wartości. -
Skrypt nie może czytać wejścia od użytkownika. Zdalne
scp
musi korzystać z bezhasłowego copy – doscp
nie da się w łatwy sposób przekazać hasła, musimy więc tak to zostawić. -
O zakończeniu działania przykładu nie informuje nas żaden komunikat, jedyny element to pasek postępu w lewej dolnej części, pokazujący użytkownikowi, że zadanie zostało wykonane.
-
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
- German: Bilder mit Lua exportieren
- Español: exportar imágenes con lua
- Italian: esportare immagini con lua
- Português: exportar imagens com lua
- Ukrainian: Експортування зображень за допомогою Lua
- Dutch: afbeeldingen exporteren met lua