metapost: remapping colors of an SVG picture
Hello list,
I tried this:
\starttext
\startMPcode
picture p ; p := lmt_svg [ filename = "sample.svg" ] ;
draw p ;
color black_rgb ; black_rgb := ( 0, 0, 0 ) ;
color red_rgb ; red_rgb := ( 1, 0, 0 ) ;
remapcolor( black_rgb, red_rgb ) ;
recolor p ;
draw p shifted ( bbwidth(p) + 5mm, 0) ;
\stopMPcode
\stoptext
but recolor gives an error:
metapost log > >> picture
metapost log > ! Wrong picture color model: redpart of grey object.
metapost log >
On 2/18/2020 12:18 PM, mf wrote:
Hello list, I tried this:
\starttext \startMPcode picture p ; p := lmt_svg [ filename = "sample.svg" ] ; draw p ; color black_rgb ; black_rgb := ( 0, 0, 0 ) ; color red_rgb ; red_rgb := ( 1, 0, 0 ) ; remapcolor( black_rgb, red_rgb ) ; recolor p ; draw p shifted ( bbwidth(p) + 5mm, 0) ; \stopMPcode \stoptext
\setupcolors[rgb=no] \startMPcode draw lmt_svg [ filename = "sample.svg" ] ; \stopMPcode
but recolor gives an error: metapost log > >> picture metapost log > ! Wrong picture color model: redpart of grey object. metapost log >
_f_:=(redpart(EXPR0), metapost log > greenpart(EXPR0),bluepart(EXPR0));if.bou... metapost log > metapost log > repathed->...fi;fi;else:addto._p_.also.i;fi;endfor metapost log > ;setbounds._p_.to._b_;_p_.... metapost log > <to be read again> metapost log > ; metapost log > <*> ...apcolor( black_rgb, red_rgb ) ; recolor p ; metapost log > draw grayed p shifted ( b... metapost log > My goal is to remap colors of an SVG image, like this:
\starttext \startMPcode picture p ; p := lmt_svg [ filename = "sample.svg" ] ; draw p ; color black_rgb ; black_rgb := ( 0, 0, 0 ) ; cmykcolor black_cmyk ; black_cmyk := ( 0, 0, 0, 1 ) ; remapcolor( black_rgb, black_cmyk ) ; recolor p ; draw p shifted ( bbwidth(p) + 5mm, 0) ; \stopMPcode \stoptext
It relates to a recent thread in the mailing list about color management. It's an attempt to use inkscape-made SVG graphics inside a CMYK workflow, without using color management.
Naturally it would work under some constraints, but there's a lot of graphics you can do with Inkscape that falls inside these: - the number of colors in the input SVG should be limited, so that every color gets converted - no embedded bitmaps, only vector graphics - perhaps some other constraints on gradients, transparency, etc.
A good alternative would be a remapper based on a custom lua function like this:
function rgb2cmyk( r, g, b ) ... return c, m, y, k end
Massi
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
-- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
Il 18/02/20 19:07, Jan U. Hasecke ha scritto:
Am 18.02.20 um 14:53 schrieb Hans Hagen:
\setupcolors[rgb=no] \startMPcode draw lmt_svg [ filename = "sample.svg" ] ; \stopMPcode I get this error.
! Not implemented: (unknown numeric)=(string). <to be read again> ] <*> ... ; p := lmt_svg [ filename = "sample.svg" ]
That's because it's LMTX only (the "lmt" prefix of "lmt_svg" should stand for "luametatex"). You find documentation about that in LMTX docs, luametafun.pdf, chapter "SVG". Best wishes, Massi
Am 18.02.20 um 19:17 schrieb mf:
Il 18/02/20 19:07, Jan U. Hasecke ha scritto:
Am 18.02.20 um 14:53 schrieb Hans Hagen:
\setupcolors[rgb=no] \startMPcode draw lmt_svg [ filename = "sample.svg" ] ; \stopMPcode I get this error.
! Not implemented: (unknown numeric)=(string). <to be read again> ] <*> ... ; p := lmt_svg [ filename = "sample.svg" ]
That's because it's LMTX only (the "lmt" prefix of "lmt_svg" should stand for "luametatex").
Yes, with lmtx it works but there is no image in the resulting file. juh
Am 18.02.20 um 19:24 schrieb Jan U. Hasecke:
Am 18.02.20 um 19:17 schrieb mf:
Il 18/02/20 19:07, Jan U. Hasecke ha scritto:
Am 18.02.20 um 14:53 schrieb Hans Hagen:
\setupcolors[rgb=no] \startMPcode draw lmt_svg [ filename = "sample.svg" ] ; \stopMPcode I get this error.
! Not implemented: (unknown numeric)=(string). <to be read again> ] <*> ... ; p := lmt_svg [ filename = "sample.svg" ]
That's because it's LMTX only (the "lmt" prefix of "lmt_svg" should stand for "luametatex").
Yes, with lmtx it works but there is no image in the resulting file.
Sorry for digging deeper. I am very thrilled by the idea that I could simply adjust a RGB SVG to well defined CMYK colors with this trick. Can anybody confirm if this works? juh
Am 18.02.20 um 19:24 schrieb Jan U. Hasecke:
Am 18.02.20 um 19:17 schrieb mf:
Il 18/02/20 19:07, Jan U. Hasecke ha scritto:
Am 18.02.20 um 14:53 schrieb Hans Hagen:
\setupcolors[rgb=no] \startMPcode draw lmt_svg [ filename = "sample.svg" ] ; \stopMPcode I get this error.
! Not implemented: (unknown numeric)=(string). <to be read again> ] <*> ... ; p := lmt_svg [ filename = "sample.svg" ]
That's because it's LMTX only (the "lmt" prefix of "lmt_svg" should stand for "luametatex").
Yes, with lmtx it works but there is no image in the resulting file.
Sorry for digging deeper.
I am very thrilled by the idea that I could simply adjust a RGB SVG to well defined CMYK colors with this trick.
Can anybody confirm if this works? mf and i are playing with an overload mechanism (actually pretty
On 2/20/2020 10:29 AM, Jan U. Hasecke wrote: trivial) ... more later but in principle the answer is yes, but - first we have to play around a bit - then it needs to end up in the core - then there need to be a new context upload - and mf has to wikify it so, some patience is needed 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 -----------------------------------------------------------------
participants (3)
-
Hans Hagen
-
Jan U. Hasecke
-
mf