esportare immagini con lua

Fino ad ora abbiamo imparato come usare lua per adattare darktable al nostro particolare flusso di lavoro. Guardiamo ora a come usare lua per esportare facilmente le immagini verso un servizio online. Se sei in grado di caricare un’immagine verso un servizio utilizzando la linea di comando, allora puoi usare lua per integrarlo nell’interfaccia utente di darktable.

Nel prossimo esempio useremo lua per esportare via scp. Una nuova destinazione apparire nella UI di darktable per esportare immagini verso un obiettivo remoto usando il meccanismo di copia in 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 è la chiamata che registra una nuova destinazione. Il primo argomento è il nome della destinazione, il secondo è l’etichetta che verrà mostrata nella UI e l’ultimo è la funzione da chiamare per ciascuna immagine. Questa funzione ha moti parametri, ma filename è l’unico che usiamo in questo esempio. Contiene il nome del file temporaneo dove l’immagine è stata esportata dal motore di darktable.

Questo codice funziona ma ha un paio di limitazione. Del resto è solo un semplice esempio:

  • Usiamo le preferenze per configurare il percorso di destinazione. Sarebbe carino aggiungere un elemento nella UI dell’esportazione in darktable. Dettaglieremo come farlo nella prossima sezione.

  • Non controlliamo il valore di ritorno di scp. Questo comando potrebbe fallire, in particolare se l’utente non ha impostato le giuste preferenze.

  • Lo script non può leggere l’input dall’utente. Il comando remoto scp deve essere senza password – scp non può avere facilmente una password, quindi lo lasceremo così com’è.

  • Non viene visualizzato alcun messaggio una volta che l’esempio è finito, solo la barra di progresso in basso a sinistra comunica all’utente che il lavoro è completo.

  • We use darktable.control.execute to call an external program. The normal os.execute would block other lua codes from happening.

translations