Clip an image with a svg
Dear all, I found this example in the garden. \startMPclip{circleclip} clip currentpicture to fullcircle shifted (.5,.5) xscaled \width yscaled \height ; \stopMPclip \clip[nx=1,ny=1,mp=circleclip]{\externalfigure[hacker.png]} Aside from the fact that I failed to understand the shifted argument by playing around with values, I wonder if it is possible to use a SVG as clip for an image. The SVG is something like this: <?xml version="1.0" encoding="UTF-8"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg width="20.887mm" height="17.613mm" version="1.1" viewBox="0 0 20.887 17.613" xmlns="http://www.w3.org/2000/svg"> <g transform="translate(152.66 -101.94)"> <path d="m-150.94 114.93c-0.5424-1.3121-0.58209-2.9382 0.18256-5.2163 2.3566-7.0175 11.139-8.7098 15.878-3.0594 7.6978 8.7032-11.506 16.052-16.06 8.2756" fill="none" stroke="#dd4901" stroke-linecap="round" stroke-width="2"/> </g> </svg> I guess that there might be a way to translate this to Metafun or Metapost, if I can't use SVG directly. In my real life use case I want to have a bleeding image at the top or the bottom of the page which can be clipped by the form while size and position of the form relative to the image and relative to the page shall be set by parameters either in \clip or in the definition of the MPclip. TIA juh
Am 03.01.2025 um 16:53 schrieb juh+ntg-context--- via ntg-context:
Dear all,
I found this example in the garden.
\startMPclip{circleclip} clip currentpicture to fullcircle shifted (.5,.5) xscaled \width yscaled \height ; \stopMPclip
\clip[nx=1,ny=1,mp=circleclip]{\externalfigure[hacker.png]}
Aside from the fact that I failed to understand the shifted argument by playing around with values, I wonder if it is possible to use a SVG as clip for an image.
In the following example the yellow square is your picture, when you use fullcircle without the shift you clipped image shows only the bottom left corner (the part where the red circle and yellow square overlap). To get the center of the picture you can either ship fullcircle by .5 in the x and y direction or use unitcircle. %%%% begin example \startMPpage[offset=1cm] fill unitsquare scaled 5cm withcolor "yellow" ; draw hlingrid(0, 10, 1, 10cm, 10cm) shifted(-5cm,-5cm) ; draw vlingrid(0, 10, 1, 10cm, 10cm) shifted(-5cm,-5cm) ; draw origin withpen pencircle scaled 10 ; draw fullcircle scaled 5cm withcolor "red" withpen pencircle scaled 5; draw unitcircle scaled 5cm withcolor "green" withpen pencircle scaled 5; \stopMPpage %%%% end example Wolfgang
participants (2)
-
juh+ntg-context@mailbox.org
-
Wolfgang Schuster