When newsizing an external figure bei [width=<some pt>], what will be its height in pt and viceversa?
Hi All, from an external figure I normally know its width and height in px. But I don't know its exact sizes in pt. When newsizing the figure in a document (by the same width-to-height-ratio), I'll do that as some part of textwidth or textheight, in pt or mm, but not in px, i.e. by means of [width=<some pt>]. Sometimes it would be interesting to know its new height in pt, and viceversa. Is there a variable or something else containing its new size in pt? Regards, Rudolf
On Tue, Feb 19, 2019 at 10:48:38AM +0100, Bahr Rudolf wrote:
Hi All,
from an external figure I normally know its width and height in px. But I don't know its exact sizes in pt. When newsizing the figure in a document (by the same width-to-height-ratio), I'll do that as some part of textwidth or textheight, in pt or mm, but not in px, i.e. by means of [width=<some pt>]. Sometimes it would be interesting to know its new height in pt, and viceversa.
Is there a variable or something else containing its new size in pt?
Regards, Rudolf
Hi All, up to now Nobody answered to my question, perhaps it might have been too simple. Indeed One could normally assume: picture-width-in-px preset-picture-width-in-pt -------------------- = -------------------------- picture-height-in-px asked-picture-height-in-pt And according to Adam Riese One gets: preset-picture-width-in-pt * picture-height-in-px asked-picture-height-in-pt = --------------------------------------------------- picture-width-in-px ----------------- The picture sizes in px One gets by invoking for instance graphics Magick's identify in a lua program: local file = assert ( io.popen ( 'gm identify ' .. picture_name, 'r' )) local output = file:read ( '*all' ) file:close () local words = {} for w in string.gmatch ( output, "%g+" ) do words [ #words + 1 ] = w end -- Width and height are found in words[3]: i.e. 5407x3544+0+0 local dims = {} for d in string.gmatch ( words [ 3 ], "%d+" ) do dims [ #dims + 1 ] = d end local px_width = dims [ 1 ] local px_height = dims [ 2 ] ----------------- It's a solution at least as long as your Lua supports "io.popen". There might be shorter solutions. Cheers, Rudolf
On Fri, Feb 22 2019, Rudolf Bahr wrote:
The picture sizes in px One gets by invoking for instance graphics Magick's identify in a lua program:
Or just img.scan(): \startluacode local image = img.scan{filename = "my-image.jpg"} logs.report("xsize", image.xsize) logs.report("ysize", image.ysize) \stopluacode -- Peter
On Fri, Feb 22, 2019 at 12:59:55PM +0100, Peter Münster wrote:
On Fri, Feb 22 2019, Rudolf Bahr wrote:
The picture sizes in px One gets by invoking for instance graphics Magick's identify in a lua program:
Or just img.scan():
\startluacode local image = img.scan{filename = "my-image.jpg"} logs.report("xsize", image.xsize) logs.report("ysize", image.ysize) \stopluacode
-- Peter
Hi Peter, thank you for pointing to img.scan{}! It's indeed shorter than to invoke Graphics Magick in Lua. Remains the conversion of image sizes into pt. There is an example in the chapter "Calculations in Lua" in "https://wiki.contextgarden.net/Image_Placement" (a work in progress). According to there it's necessary to know the resolution in order to convert image sizes from px to pt which at least I don't know. Mostly I can preset one size of a picture (say the width in pt) to be able to place it on a page and assuming x-resolution = y-resolution and keeping width-to-height ratio I calculate the missing size (here the height in pt) in Lua by picture-height-in-px asked-picture-height-in-pt = preset-picture-width-in-pt * -------------------- picture-width-in-px This is simple and normally it suffices for me. Rudolf
On 2/23/2019 11:08 AM, Rudolf Bahr wrote:
On Fri, Feb 22, 2019 at 12:59:55PM +0100, Peter Münster wrote:
On Fri, Feb 22 2019, Rudolf Bahr wrote:
The picture sizes in px One gets by invoking for instance graphics Magick's identify in a lua program:
Or just img.scan():
\startluacode local image = img.scan{filename = "my-image.jpg"} logs.report("xsize", image.xsize) logs.report("ysize", image.ysize) \stopluacode
-- Peter
Hi Peter,
thank you for pointing to img.scan{}! It's indeed shorter than to invoke Graphics Magick in Lua. Remains the conversion of image sizes into pt. There is an example in the chapter "Calculations in Lua" in "https://wiki.contextgarden.net/Image_Placement" (a work in progress). According to there it's necessary to know the resolution in order to convert image sizes from px to pt which at least I don't know. Mostly I can preset one size of a picture (say the width in pt) to be able to place it on a page and assuming x-resolution = y-resolution and keeping width-to-height ratio I calculate the missing size (here the height in pt) in Lua by
picture-height-in-px asked-picture-height-in-pt = preset-picture-width-in-pt * -------------------- picture-width-in-px
This is simple and normally it suffices for me. Better use the built-in methods:
\starttext \getfiguredimensions[t:/sources/mill.png] (\figurewidth,\figureheight) (\figurexsize,\figureysize) \stoptext as it prevents opening the files multiple times. It's also more futureproof. Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On Sat, Feb 23, 2019 at 11:56:32AM +0100, Hans Hagen wrote:
On 2/23/2019 11:08 AM, Rudolf Bahr wrote:
On Fri, Feb 22, 2019 at 12:59:55PM +0100, Peter Münster wrote:
On Fri, Feb 22 2019, Rudolf Bahr wrote:
The picture sizes in px One gets by invoking for instance graphics Magick's identify in a lua program:
Or just img.scan():
\startluacode local image = img.scan{filename = "my-image.jpg"} logs.report("xsize", image.xsize) logs.report("ysize", image.ysize) \stopluacode
-- Peter
Hi Peter,
thank you for pointing to img.scan{}! It's indeed shorter than to invoke Graphics Magick in Lua. Remains the conversion of image sizes into pt. There is an example in the chapter "Calculations in Lua" in "https://wiki.contextgarden.net/Image_Placement" (a work in progress). According to there it's necessary to know the resolution in order to convert image sizes from px to pt which at least I don't know. Mostly I can preset one size of a picture (say the width in pt) to be able to place it on a page and assuming x-resolution = y-resolution and keeping width-to-height ratio I calculate the missing size (here the height in pt) in Lua by
picture-height-in-px asked-picture-height-in-pt = preset-picture-width-in-pt * -------------------- picture-width-in-px
This is simple and normally it suffices for me. Better use the built-in methods:
\starttext
\getfiguredimensions[t:/sources/mill.png]
(\figurewidth,\figureheight)
(\figurexsize,\figureysize)
\stoptext
as it prevents opening the files multiple times. It's also more futureproof.
Hans
Hi Hans, I fear it doesn't work. I used the above code with a test-picture of mine (in .png and .jpg version) and got: (0sp,0sp) (0,0) Now I'm baffled what the explanation could be. Are "mill" or "cow" somehow specially prepared? I used: ConTeXt ver: 2018.03.16 22:20 MKIV beta fmt: 2018.3.21 and getfiguredimensions[~/my-test-picture.png] Rudolf
On 2/23/2019 12:37 PM, Rudolf Bahr wrote:
On Sat, Feb 23, 2019 at 11:56:32AM +0100, Hans Hagen wrote:
On 2/23/2019 11:08 AM, Rudolf Bahr wrote:
On Fri, Feb 22, 2019 at 12:59:55PM +0100, Peter Münster wrote:
On Fri, Feb 22 2019, Rudolf Bahr wrote:
The picture sizes in px One gets by invoking for instance graphics Magick's identify in a lua program:
Or just img.scan():
\startluacode local image = img.scan{filename = "my-image.jpg"} logs.report("xsize", image.xsize) logs.report("ysize", image.ysize) \stopluacode
-- Peter
Hi Peter,
thank you for pointing to img.scan{}! It's indeed shorter than to invoke Graphics Magick in Lua. Remains the conversion of image sizes into pt. There is an example in the chapter "Calculations in Lua" in "https://wiki.contextgarden.net/Image_Placement" (a work in progress). According to there it's necessary to know the resolution in order to convert image sizes from px to pt which at least I don't know. Mostly I can preset one size of a picture (say the width in pt) to be able to place it on a page and assuming x-resolution = y-resolution and keeping width-to-height ratio I calculate the missing size (here the height in pt) in Lua by
picture-height-in-px asked-picture-height-in-pt = preset-picture-width-in-pt * -------------------- picture-width-in-px
This is simple and normally it suffices for me. Better use the built-in methods:
\starttext
\getfiguredimensions[t:/sources/mill.png]
(\figurewidth,\figureheight)
(\figurexsize,\figureysize)
\stoptext
as it prevents opening the files multiple times. It's also more futureproof.
Hans
Hi Hans,
I fear it doesn't work. I used the above code with a test-picture of mine (in .png and .jpg version) and got:
(0sp,0sp) (0,0)
Now I'm baffled what the explanation could be. Are "mill" or "cow" somehow specially prepared? I used:
ConTeXt ver: 2018.03.16 22:20 MKIV beta fmt: 2018.3.21 and getfiguredimensions[~/my-test-picture.png]
maybe the image is not found ... what if you replace the ~ -- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
participants (3)
-
Hans Hagen
-
Peter Münster
-
Rudolf Bahr