Hi,
triggered by a question on the user list I created a lua script which creates a
contact sheet (Kontaktabzug) for a set of JPGs. The output is a PDF document.
The script uses lualatex to do the job. How do I incorporate that script into
darktable?
The script works pretty well on the commandline. You can try it out. It is
attached below. Just say
do_contactsheet.lua /path/to/pictures/*.jpg
/path/to/otherpictures/*.png
This will create a contactsheet.pdf in the current directory. With optional
commandline parameters --title and --count you can set a different document
title and a different number of pictures per line (default is 4)
What I would like to do is:
- include it into darktable to excecute it for the current film roll
- set the title to the name of the film roll
- retrieve all JPGs/PNGs from the current export directory and create
the contactsheet.pdf in that directory
- call the pdf viewer when the script is finished (how to determine the
default pdf viewer?)
- eventually allow the user to set the "count" parameter to a different
value
- eventually allow the user to set the "title" parameter to a different
value
I need some help to get there. I dont know how to retrieve the internal
darktable parameters, like the current filmroll, nor do I now how to interact
with the user in darktable.
Your advice is appreciated
Matthias
Here is the script:
-------------------
#!/usr/bin/lua
-- do_contactsheet.lua creates a contact sheet (Kontakabzug) for a set of
pictures
-- it uses LaTeX to create a PDF document
-- it supports JPG and PNG files
-- (c) Matthias Bodenbinder, May 2015
-- default values
title = "Kontaktabzüge"
thumbs_per_line = 4
-- LaTeX preamble
tex_start="\\documentclass[a4paper,10pt]{article}\
\\usepackage{graphicx}\
\\usepackage{fontspec}\
\\pagestyle{empty}\
\\parindent0pt\
\\parskip1em\
\\usepackage{geometry}\
\\geometry{a4paper,left=5mm,right=5mm, top=5mm, bottom=5mm}\
\\begin{document}"
-- place a thumbnail
function thumbnail(i,f)
-- i = number of this picture
-- f = fullpath to picture
-- remove leading path to retrieve filename
label = string.gsub(f, ".*/", "")
-- print thumbnail in minipage
return "\\begin{minipage}[b]{" .. w .. "\\textwidth}\n" ..
" \\includegraphics[width=\\textwidth]{" .. f .. "}\\newline\n" ..
" \\centering{\\verb|" .. i .. ": " .. label .. "|}\n" ..
"\\end{minipage}\n"
end
-- print usage message
function usage()
print("Usage: " .. arg[0] .. " --title <title> --count <thumbs per
line> <pictures jpg/png>")
end
-- main loop
-- check for lualatex and exit if it does not exist
if( not os.execute("which lualatex >/dev/null") )then
print("lualatex not found. Aborting!")
os.exit()
end
pictures = ""
pcount = 0
i = 1
-- width of a single picture
w = 1/thumbs_per_line - 0.01;
while i<=#arg do
if (arg[i] == "--title" or arg[i] == "-t") then
-- next arg is the title
title = arg[i+1]
-- go to next picture
i=i+2
elseif (arg[i] == "--count" or arg[i] == "-c") then
-- next arg is thumbs per line
thumbs_per_line = arg[i+1]
-- calculate new picture width
w = 1/thumbs_per_line - 0.01;
-- go to next picture
i=i+2
elseif (arg[i] == "--help" or arg[i] == "-h") then
usage()
os.exit()
else
pcount=pcount+1;
pictures = pictures .. thumbnail(pcount, arg[i])
i=i+1
if( pcount % thumbs_per_line == 0 ) then
-- enough pictures in one line =>
pictures = pictures .. "\\par\n"
else
pictures = pictures .. "\\hspace{1mm}\n"
end
end
end
-- write tex file to /tmp
basefile = "/tmp/contactsheet"
texfile = basefile .. ".tex"
pdffile = basefile .. ".pdf"
f = io.output(texfile, "w")
io.write(tex_start)
io.write("{\\Large\\bfseries " .. title .. "}\\par\n")
io.write(pictures)
io.write("\\end{document}")
io.close()
-- execute lualatex to create pdf file
os.execute("cd /tmp; lualatex " .. texfile)
-- move pdf to current folder
if( not os.execute("mv " .. pdffile .. " .") ) then
print("file does not exist: " .. pdffile)
end
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
darktable-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/darktable-devel