ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Henning Hraban Ramm <texml@fiee.net>
To: ntg-context@ntg.nl
Subject: [NTG-context] Re: access image properties in Lua
Date: Mon, 17 Jul 2023 18:20:27 +0200	[thread overview]
Message-ID: <8aeba37a-d6cd-eb39-6814-5756ef6ebc0c@fiee.net> (raw)
In-Reply-To: <2784af61-7a02-22e4-31b7-5a63cacdf0d0@icloud.com>

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	other threads:[~2023-07-17 16:23 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-11 12:22 Henning Hraban Ramm
2023-07-13  7:19 ` Hans Hagen
2023-07-17 13:44   ` [NTG-context] " Alan Braslau via ntg-context
2023-07-17 16:20     ` Henning Hraban Ramm [this message]
2023-07-17 17:10       ` Alan Braslau via ntg-context
     [not found]       ` <048d051e-c66f-3e0f-e3d2-48ef300b7280@icloud.com>
2023-07-18 11:39         ` Henning Hraban Ramm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8aeba37a-d6cd-eb39-6814-5756ef6ebc0c@fiee.net \
    --to=texml@fiee.net \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).