Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -51,6 +51,12 @@ end
|
|||||||
-- is enfuse installed?
|
-- is enfuse installed?
|
||||||
local enfuse_installed = df.check_if_bin_exists("enfuse")
|
local enfuse_installed = df.check_if_bin_exists("enfuse")
|
||||||
|
|
||||||
|
-- instance of DT tiff exporter
|
||||||
|
local tiff_exporter = dt.new_format("tiff")
|
||||||
|
tiff_exporter.bpp = 16
|
||||||
|
tiff_exporter.max_height = 0
|
||||||
|
tiff_exporter.max_width = 0
|
||||||
|
|
||||||
-- check the version so that we can use the correct arguments
|
-- check the version so that we can use the correct arguments
|
||||||
|
|
||||||
local version = nil
|
local version = nil
|
||||||
@@ -121,7 +127,7 @@ dt.register_lib(
|
|||||||
dt.new_widget("button")
|
dt.new_widget("button")
|
||||||
{
|
{
|
||||||
label = enfuse_installed and "run enfuse" or "enfuse not installed",
|
label = enfuse_installed and "run enfuse" or "enfuse not installed",
|
||||||
clicked_callback = function (_)
|
clicked_callback = function ()
|
||||||
-- remember exposure_mu
|
-- remember exposure_mu
|
||||||
-- TODO: find a way to save it whenever the value changes
|
-- TODO: find a way to save it whenever the value changes
|
||||||
local mu = exposure_mu.value
|
local mu = exposure_mu.value
|
||||||
@@ -135,7 +141,7 @@ dt.register_lib(
|
|||||||
local response_file = os.tmpname()
|
local response_file = os.tmpname()
|
||||||
local f = io.open(response_file, "w")
|
local f = io.open(response_file, "w")
|
||||||
if not f then
|
if not f then
|
||||||
dt.print("error writing to `"..response_file.."'")
|
dt.print(string.format(_("Error writing to `%s`"), response_file))
|
||||||
os.remove(response_file)
|
os.remove(response_file)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@@ -144,28 +150,41 @@ dt.register_lib(
|
|||||||
local cnt = 0
|
local cnt = 0
|
||||||
local n_skipped = 0
|
local n_skipped = 0
|
||||||
local target_dir
|
local target_dir
|
||||||
for _, i in ipairs(dt.gui.action_images) do
|
for i_, i in ipairs(dt.gui.action_images) do
|
||||||
-- only use ldr files as enfuse can't open raws. alternatively we could export raws that we encounter
|
|
||||||
|
-- only use ldr files as enfuse can't open raws
|
||||||
if i.is_ldr then
|
if i.is_ldr then
|
||||||
cnt = cnt + 1
|
cnt = cnt + 1
|
||||||
f:write(i.path.."/"..i.filename.."\n")
|
f:write(i.path.."/"..i.filename.."\n")
|
||||||
target_dir = i.path
|
target_dir = i.path
|
||||||
|
|
||||||
|
-- alternatively raws will be exported as tiff
|
||||||
|
elseif i.is_raw then
|
||||||
|
local tmp_exported = os.tmpname()..".tiff"
|
||||||
|
dt.print(string.format(_("Converting raw file '%s' to tiff..."), i.filename))
|
||||||
|
tiff_exporter.write_image(tiff_exporter, i, tmp_exported, false)
|
||||||
|
dt.print_log(string.format("Raw file '%s' converted to '%s'", i.filename, tmp_exported))
|
||||||
|
|
||||||
|
cnt = cnt + 1
|
||||||
|
f:write(tmp_exported.."\n")
|
||||||
|
target_dir = i.path
|
||||||
|
|
||||||
|
-- other images will be skipped
|
||||||
else
|
else
|
||||||
dt.print("skipping "..i.filename)
|
dt.print(string.format(_("Skipping %s..."), i.filename))
|
||||||
n_skipped = n_skipped + 1
|
n_skipped = n_skipped + 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
f:close()
|
f:close()
|
||||||
-- bail out if there is nothing to do
|
-- bail out if there is nothing to do
|
||||||
if cnt == 0 then
|
if cnt == 0 then
|
||||||
dt.print("no suitable images selected, nothing to do for enfuse")
|
dt.print(_("No suitable images selected, nothing to do for enfuse"))
|
||||||
os.remove(response_file)
|
os.remove(response_file)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if n_skipped == 1 then
|
|
||||||
dt.print(n_skipped.." image skipped")
|
if n_skipped > 0 then
|
||||||
elseif n_skipped > 1 then
|
dt.print(string.format(_("%d image(s) skipped"), n_skipped))
|
||||||
dt.print(n_skipped.." images skipped")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- call enfuse on the response file
|
-- call enfuse on the response file
|
||||||
@@ -177,10 +196,10 @@ dt.register_lib(
|
|||||||
if version < "4.2" then
|
if version < "4.2" then
|
||||||
exposure_option = " --exposure-mu "
|
exposure_option = " --exposure-mu "
|
||||||
end
|
end
|
||||||
local command = "enfuse --depth "..depth.value..exposure_option..ugly_decimal_point_hack
|
local command = enfuse_installed.." --depth "..depth.value..exposure_option..ugly_decimal_point_hack
|
||||||
.." -o \""..output_image.."\" \"@"..response_file.."\""
|
.." -o \""..output_image.."\" \"@"..response_file.."\""
|
||||||
if dt.control.execute( command) > 0 then
|
if dt.control.execute( command) > 0 then
|
||||||
dt.print("enfuse failed, see terminal output for details")
|
dt.print(_("Enfuse failed, see terminal output for details"))
|
||||||
os.remove(response_file)
|
os.remove(response_file)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
@@ -192,9 +211,9 @@ dt.register_lib(
|
|||||||
local image = dt.database.import(output_image)
|
local image = dt.database.import(output_image)
|
||||||
|
|
||||||
-- tell the user that everything worked
|
-- tell the user that everything worked
|
||||||
dt.print("enfuse was successful, resulting image was imported")
|
dt.print(_("enfuse was successful, resulting image has been imported"))
|
||||||
-- normally printing to stdout is bad, but we allow enfuse to show its output, so adding one extra line is ok
|
-- normally printing to stdout is bad, but we allow enfuse to show its output, so adding one extra line is ok
|
||||||
print("enfuse: done, resulting image '"..output_image.."' was imported with id "..image.id)
|
print(string.format(_("enfuse: done, resulting image '%s' has been imported with id %d"), output_image, image.id))
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user