Chris
Chris

Reputation: 4728

Applying coloured opacity to SVG image

I have an SVG that contains a <g> element, within this is a <path>, within here I specify a fill of #image0

Later in the same SVG I have my <def>, within here is my <pattern> and then the <image> tag that corresponds to the fill of #image0

The value of the href of the <image> is a base64 encoded image.

I would like to apply a coloured, semi transparent overlay on top of the image. e.g. a #F5A9A9 50% opacity overlay.

I have tried adding style="opacity: 0.5" to the <image> tag -- this applies the opacity but obviously no colour. I suspect the answer is along the lines of background-color: rgba(245,169,169, 0.5) but I am unsure where to position this,

<g class="g-item">
    <path class="st0" d="M1839.1,1394.2c0,0,22.7,6.7,30,18c0,0,111.3,7.1,122.6-130.5V801.1l-827.8,260l0,226 c4.9,107,118.7,125,118.7,125c3.6-17.3,27-19.5,27-19.5L1839.1,1394.2z" data-id="0" style="fill: url("#image0");"></path>
</g>

<defs class="g-def">
    <pattern id="image0" width="1" height="1" y="0" x="0" patternContentUnits="objectBoundingBox" viewBox="0 0 1 1" preserveAspectRatio="xMidYMid slice">
        <image preserveAspectRatio="xMidYMid meet" width="1" height="1" x="0" y="0" xlink:href="data:image/png;base64,iVBORw0KGgoAA.....AElFTkSuQmCC" data-naturalWidth="960" data-naturalHeight="960"></image>
    </pattern>
</defs>

Upvotes: 1

Views: 696

Answers (1)

ccprog
ccprog

Reputation: 21811

I would like to apply a coloured, semi transparent overlay on top of the image. e.g. a #F5A9A9 50% opacity overlay.

Well, you can do just that: paint a semi-transparent rectangle on top of the image:

<defs class="g-def">
    <pattern id="image0" width="1" height="1" y="0" x="0"
             patternContentUnits="objectBoundingBox"
             viewBox="0 0 1 1" preserveAspectRatio="xMidYMid slice">
        <image preserveAspectRatio="xMidYMid meet"
               width="1" height="1" x="0" y="0"
               xlink:href="data:image/png;base64,iVBORw0KGgoAA.....AElFTkSuQmCC"
               data-naturalWidth="960" data-naturalHeight="960"></image>
        <rect width="1" height="1" fill="#F5A9A9" opacity="0.5"></rect>
    </pattern>
</defs>

Upvotes: 1

Related Questions