exportar imágenes con lua
Hasta ahora hemos aprendido a usar lua para adaptar darktable a nuestro flujo de trabajo particular. Veamos ahora cómo usar lua para exportar imágenes fácilmente a un servicio en línea. Si puede cargar una imagen en un servicio a través de la línea de comando, puede usar lua para integrar esto en la interfaz de usuario de darktable.
En el siguiente ejemplo usaremos lua para exportar vía scp
. Aparecerá un nuevo tipo de almacenamiento en la interfaz de usuario de darktable que exportará imágenes a un objetivo remoto a través del mecanismo de copia en ssh
.
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
es la llamada que realmente registra un nuevo tipo de almacenamiento. El primer argumento es un nombre para el tipo de almacenamiento, el segundo es la etiqueta que se mostrará en la interfaz de usuario y el último es una función para llamar a cada imagen. Esta función tiene muchos parámetros, pero filename
es el único que usamos en este ejemplo. Contiene el nombre de un archivo temporal donde la imagen fue exportada por el motor de darktable.
Este código funcionará pero tiene un par de limitaciones. Después de todo, este es solo un ejemplo simple:
-
Usamos preferencias para configurar la ruta de destino. Sería mejor agregar un elemento a la interfaz de usuario de exportación en darktable. Detallaremos cómo hacerlo en la siguiente sección.
-
No verificamos el valor devuelto de
scp
. Ese comando puede fallar, en particular si el usuario no ha configurado correctamente la preferencia. -
Este script no puede leer la entrada del usuario. El
scp
remoto debe usar una copia sin contraseña; no se puede proporcionar una contraseña ascp
fácilmente, así que lo dejaremos así. -
No se muestra ningún mensaje una vez finalizado el ejemplo, solo la barra de progreso en la parte inferior izquierda le dice al usuario que el trabajo está completo.
-
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
- 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