image - SVG color-shadow filter fails when built with JavaScript -
image - SVG color-shadow filter fails when built with JavaScript -
i created drop-shadow svg image, works fine using pure svg (see a live demo):
class="lang-svg prettyprint-override"><!doctype html> <html> <body> <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <defs> <filter id="drop"> <fecomponenttransfer result="offout" in="sourcealpha"> <fefunca type="linear" /> <fefuncr type="discrete" tablevalues="1" /> <fefuncg type="discrete" /> <fefuncb type="discrete" /> </fecomponenttransfer> <feoffset result="shadow" dx="67" dy="0" in="offout" /> <fegaussianblur stddeviation="8" result="blurout" in="shadow" /> <feblend in="sourcegraphic" in2="blurout" mode="normal" /> </filter> </defs> <g> <g filter="url(#drop)"> <image x="10" y="100" width="440" height="60" xlink:href="/images/pulpit.jpg" preserveaspectratio="defer"></image> </g> </g> </svg> </body> </html> here image created reddish shadow, expected, seek create , modify svg via javascript, using next code (see a live demo):
class="lang-html prettyprint-override"><!doctype html> <html> <body> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="sv"> <rect width="90" height="90" stroke="green" stroke-width="3" fill="rgba(255,25,8,1)" /> <g id="gr"> <image x="10" y="100" width="440" height="60" xlink:href="/images/pulpit.jpg" preserveaspectratio="defer"></image> </g> </svg> </body> <script> var feoffset = document.createelementns("http://www.w3.org/2000/svg", "feoffset"); var fegaussianblur = document.createelementns("http://www.w3.org/2000/svg", "fegaussianblur"); var filter = document.createelementns("http://www.w3.org/2000/svg", "filter"); var definition = document.createelementns("http://www.w3.org/2000/svg", "defs"); filter.setattribute("id", "fpicture5"); filter.setattribute("filterunits", "userspaceonuse"); feoffset.setattribute("result", "shadow"); feoffset.setattribute("in", "offout"); feoffset.setattribute("dx", "67"); feoffset.setattribute("dy", "0"); fegaussianblur.setattribute("result", "blurout"); fegaussianblur.setattribute("in", "shadow"); fegaussianblur.setattribute("stddeviation", "8"); var feblend = document.createelementns("http://www.w3.org/2000/svg", "feblend"); var fectransfer = document.createelementns("http://www.w3.org/2000/svg", "fecomponenttransfer"); var fefuncr = document.createelementns("http://www.w3.org/2000/svg", "fefuncr"); var fefuncg = document.createelementns("http://www.w3.org/2000/svg", "fefuncg"); var fefuncb = document.createelementns("http://www.w3.org/2000/svg", "fefuncb"); fectransfer.setattribute("in", "sourcealpha"); fectransfer.setattribute("result", "offout"); feblend.setattribute("in", "sourcegraphic"); feblend.setattribute("in2", "blurout"); feblend.setattribute("mode", "normal"); fefuncr.setattribute("type", "discrete"); fefuncg.setattribute("type", "discrete"); fefuncb.setattribute("type", "discrete"); fefuncr.setattribute("tablevalues", "1"); fefuncg.setattribute("tablevalues", "0"); fefuncb.setattribute("tablevalues", "0"); fectransfer.appendchild(fefuncr); fectransfer.appendchild(fefuncg); fectransfer.appendchild(fefuncb); filter.appendchild(fectransfer); filter.appendchild(feoffset); filter.appendchild(fegaussianblur); filter.appendchild(feblend); definition.appendchild(filter); document.getelementbyid("sv").appendchild(definition); document.getelementbyid("gr").setattribute("filter", "url(#fpicture5)"); </script> </html> the result image created, shadow black.
i can't find way around create reddish intended, ideas?
works fine on firefox once replace image 1 exists e.g. 1 in other fiddle:
<image x="10" y="100" width="440" height="60" xlink:href="http://placekitten.com/100/80" preserveaspectratio="defer"></image> if using other ua , doesn't work perhaps should raise bug on whatever bug tracker uses.
did realise you're missing fefunca fecomponenttransfer kid in sec fiddle?
javascript image svg svg-filters
Comments
Post a Comment