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
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context
webpage : https://www.pragma-ade.nl / http://context.aanhet.net
archive : https://bitbucket.org/phg/context-mirror/commits/
wiki : https://contextgarden.net
___________________________________________________________________________________