Am 17.07.23 um 15:44 schrieb Alan Braslau via ntg-context:
On 13/07/23 13/07/23, 09:19, Hans Hagen wrote:
On 7/11/2023 2:22 PM, Henning Hraban Ramm wrote:
What’s the current approved way to get image properties within a Lua function?
I’d like to know the pixel size and if possible also the scaled target size of an image; either the "current" one or by name.
\ctxlua{inspect(figures.getinfo("t:/sources/mill.png").used)}
\ctxlua{inspect(figures.getinfo("t:/sources/mill.png").status)}
etc .. no more faking the img lib
Thank you!
We also might have a target resolution, say 300 dpi or perhaps better for printing.
What raster widths are you printing with? More than 300 dpi would be only needed for very high resolution art prints with very fine details, possibly in FM raster. Usually, 200 dpi final resolution is enough – 300 dpi are suggested to allow for some scaling. For fine line art (black or spot color only, no rastering), 1200 dpi is suggested.
I can even imagine an automated workflow where high-resolution, say 2400 dpi or even greater bitmap images, are supplied and the included bitmap could be "resampled" resulting in the inclusion of a targeted resolution. However, the reporting of the included, likely resized image resolutions then used to adjust or resample the source files externally and manually case-by-case would be sufficient.
Well, I was working for years with adapted versions of Peter Münster’s graph-downsample.lua. You can hook in custom functions like this: """ \startluacode local function downsampler(oldname, newname, resolution) if not resolution or resolution == "" then resolution = 72 end local cmd = string.format( [[gm convert -resample %ix%i %s %s]], resolution, resolution, oldname, newname) --print(cmd) os.execute(cmd) end -- Beware: the calculation is still wrong, -- I need to try figures.getinfo -- Set the PDF and default JPEG converters to the above function. --figures.converters.jpg.downsampler = downsampler figures.converters.jpg.pdf = downsampler figures.converters.jpg.default = downsampler \stopluacode \setupexternalfigure[ conversion=downsampler, resolution=200, ] """
Any suggestions on how to hook-in such reporting?
local report = logs.reporter("alan.imaging") report("Now calculating...")
Bonus question: how also to handle the case of \startMPcode draw figure "MyFigure" xsized TextWidth ; ... \stopMPcode
Is MyFigure a pixel image? You could use \externalfigure within MP code. Hraban