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
___________________________________________________________________________________

Reply via email to