Open kidzzz opened 10 years ago
/cc @asturur
taking a look.
@kidzzz @kangax Actually the situation is that the image class has 2 elements, original image and image with filters applied. When we export to SVG we export the image eventually already filtered, but not any filter information. What are you asking is to export the original untouched image and then for every filter class create a toSvg() method that would export the filter ( assigning it an ID and then linking the filter to the image ). This is certainly possible, but i cannot see any good thing for fabric.js from it. Svg output would be more complex and bigger, Import would be more complicated ( actually filters are not supported in import, look at svg 171, the yellow car ) Can you be more specific on what you would like to obtain? maybe i just misunderstood.
Creating toSVG()
on each filter certainly sounds like the right way to do it; the Fabric way, when each class/object is responsible for its own rendering, import, export, etc. But it is quite a big effort, like @asturur says. We can do this in the future, but meanwhile, why doesn't your multiply filter work if SVG is supposed to be created with already modified image?
Also there should be a 1:1 correspondence between filters you can create in fabric.js and filters in svg spec. There is no evidence that every filter will be supported by svg spec. There will be a subset of filter exportable and other not maybe.
@kangax @asturur
I appreciate all the comments. Such a great project and creators!
"When we export to SVG we export the image eventually already filtered, but not any filter information" -- @asturur, are you saying the SVG should already have filters applied to the image? This is not what I am seeing.
Please let me explain my situation: A user uploads a clip-art into the canvas, then he changes the background of the image to a different color. We achieve this by using the Multiply filter, so the JSON looks like this (Please note the image url isn't valid but I attach the clipart so you guys can test it out):
{"objects":[{"type":"image","originX":"left","originY":"top","left":62,"top":60,"width":239,"height":298,"fill":"rgb(0,0,0)","stroke":null,"strokeWidth":1,"strokeDashArray":null,"strokeLineCap":"butt","strokeLineJoin":"miter","strokeMiterLimit":10,"scaleX":0.55,"scaleY":0.55,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","src":"http://xyz.com/clipart_sample.png","filters":[{"type":"Multiply","color":"rgb(252, 185, 19)"}],"crossOrigin":""}],"background":""}
When I export the JSON to SVG, here is what I get (Please ignore the image path, I made it relative):
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="244" height="362" xml:space="preserve"><desc>Created with Fabric.js 1.4.7</desc><defs></defs><g transform="translate(127.73 141.95) scale(0.55 0.55)"><image xlink:href="clipart_sample.png" style="stroke: none; stroke-width: 1; stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); opacity: 1;" transform="translate(-119.5 -149)" width="239" height="298" preserveAspectRatio="none"></image></g></svg>
So when I open this SVG file in Illustrator or IE, the background color of the clipart is not saved. Looking at the SVG string, I don't see anything indicating the Multiply filter has been applied.
Hope I explain the problem well enough. Thanks a lot!
Hey guys,
Just want to see if you guys have a chance to take a look at the problem.
Thanks!
Hello @kangax @asturur ,
Would be super cool if you guys can give me a some ideas on how to resolve this issue.
Thanks.
Image xlink:href is not supported at the moment, AFAIR, so we need to work on it. I'll get to it when I get time; right now still busy with work.
mmmm so strange. with a dataurl you should solve. i ll check as weel, but sunday evening, i m with family now. for sure fabric will not make new png for you, so dataurl should be the solution.
Okay guys. Thank you for the responses.
i have some spare time i wanted to dedicate to fabricjs tonight. is there in this issue all the material i need to check the problem? do i need something else other than code and image you posted? Il 26/ago/2014 21:34 "kidzzz" notifications@github.com ha scritto:
Okay guys. Thank you for the responses.
— Reply to this email directly or view it on GitHub https://github.com/kangax/fabric.js/issues/1577#issuecomment-53475731.
Yes, I think everything is in this thread. You should be able to use the JSON and image to test the current toSVG() function. I also included a sample SVG output as a reference.
Thank you!
So i loaded the PNG of the crocodile. Then i did :
oImg.filters.push(new fabric.Image.filters.Multiply({color:'rgb(241, 93, 34)'}));
oImg.applyFilters();
Then i exported toSVG and i obtained
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="900" height="500" xml:space="preserve"><desc>Created with Fabric.js 1.4.11</desc><defs></defs><g transform="translate(341.5 267)">
<image xlink:href="data:image/png;base64,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" x="-119.5" y="-149" style="stroke: none; stroke-width: 1; stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: source-over; opacity: 1;" width="239" height="298" preserveAspectRatio="none"></image>
</g>
</svg>
That to our eyes is
So, what is wrong? The png image has been exported to data url image, and that is the only way to do it untill filter exporting is possible. Are you running under nodejs?
@asturur - No, nothing is wrong. I am totally aware toDataUrl() should work with the filter. I tried and it did work. It was not until @kangax mentioned filter export was not yet supported, I then realized the whole thing.
What I am hoping to achieve is:
<image xlink:href="clipart_sample.png" filter_information />
Since I am not familiar with image filters and their formats, I have not been able to write my own function to do the job. Any help in this regards is greatly welcome.
And yes, I am running under nodejs.
Thanks again.
Hello,
I've using fabricjs for our own project. Works great!
I have an issue of converting canvas to SVG, particular with image filters. We use the Multiply filter, an example would be:
"filters":[{"type":"Multiply","color":"rgb(241, 93, 34)"}]
The current version of toSVG() doesn't support image filters in SVG format. We've looked around but have not been able to find a away to do this. We know where to modify the code but don't know how the format would look like. Any help is appreciated.
Thanks!
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.