Now I can downsample jpeg-files on the fly, see attached example file. But I need 2 patches:
1.) To get the width and the height into the name of the file, because when the figure dimensions change, there must be a new conversion: --8<---------------cut here---------------start------------->8--- --- grph-inc.lua~ 2012-06-05 10:37:01.000000000 +0200 +++ grph-inc.lua 2012-07-31 22:40:39.214426838 +0200 @@ -528,6 +528,9 @@ if resolution and resolution ~= "" then -- the order might change newbase = newbase .. "_" .. resolution end + local width = figures.current().request.width + local height = figures.current().request.height + newbase = newbase .. "_" .. width .. "_" .. height -- -- see *, we had: -- --8<---------------cut here---------------end--------------->8--- 2.) To avoid crap in the width and height options: --8<---------------cut here---------------start------------->8--- --- grph-inc.mkiv~ 2012-07-20 23:26:52.000000000 +0200 +++ grph-inc.mkiv 2012-08-01 00:02:23.851094854 +0200 @@ -293,6 +293,10 @@ % \the\t_grph_include_local_settings \dostarttagged\t!image\empty + \edef\current_width{\externalfigureparameter\c!width}% + \edef\current_height{\externalfigureparameter\c!height}% + \def\nocrap##1{\doifnotemptyvalue{##1}{% + \the\dimexpr\csname##1\endcsname\relax}}% \ctxlua{figures.push { name = "\p_grph_include_name", label = "\p_grph_include_label", @@ -312,8 +316,8 @@ resolution = "\externalfigureparameter\c!resolution", color = "\internalspotcolorparent{\externalfigureparameter\c!color}", % hack is needed ["repeat"] = "\externalfigureparameter\c!repeat", - width = "\externalfigureparameter\c!width", % can be crap - height = "\externalfigureparameter\c!height", % can be crap + width = "\nocrap{current_width}", % no more crap + height = "\nocrap{current_height}", % no more crap } }% \ctxlua{figures.identify()}% % also mode: checkpresense only --8<---------------cut here---------------end--------------->8--- Hans, could you please patch the files? Cheers, -- Peter
\startluacode local format = string.format -- figures.cachepaths.path = "cache" -- should be setup-option local function sample_down(oldname, newname, resolution) local request = figures.current().request local width = request.width:sub(1, -3) local height = request.height:sub(1, -3) if resolution == "" or (width == "" and height == "") then print(format("Nothing to do: %s, %s, %s", oldname, newname, resolution)) return end local inch = 72.27 local image = img.scan{filename = oldname} local xy = image.xsize / image.ysize if width == "" then width = height * xy end if height == "" then height = width / xy end local xsize = resolution * width / inch local ysize = resolution * height / inch if xsize < image.xsize or ysize < image.ysize then local s = format("gm convert -resize %dx%d %s %s", xsize, ysize, oldname, newname) print("Conversion: " .. s) os.execute(s) else print(format("Nothing to do: %s, %s, %s", oldname, newname, resolution)) print(format("xsize = %d, ysize = %d", xsize, ysize)) end end figures.converters.jpg = figures.converters.jpg or {} figures.converters.jpg["lowres.jpg"] = sample_down \stopluacode \starttext \setupexternalfigures[resolution=50, conversion=lowres.jpg] \externalfigure[hacker][width=0.5\textwidth] \setupexternalfigures[resolution=10] \externalfigure[hacker][width=0.5\textwidth] \stoptext
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________