将SVG过滤器应用的图像转换为二进制或base64,以保存在后端

诺菲斯

我在GUI中显示图像,并对其应用了SVG过滤器。现在,我的要求是通过转换为二进制或base64来保存此更改后的图像(应用SVG滤镜)。我尝试使用画布进行转换。但是无法实现。这是我到目前为止一直在尝试的方法。任何人都可以给一些提示继续。

JsFiddle链接

<div class="item active filtered" data-slide-number="0">
    <svg style="overflow: hidden; height: 637px; width: 546px;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events">
        <defs>
            <filter id="svgBlur" width="110%" height="110%">
                <feComponentTransfer id="bFilter">
                    <feFuncR id="brightness1" class="brgt" type="linear" slope="2"></feFuncR>
                    <feFuncG id="brightness2" class="brgt" type="linear" slope="1"></feFuncG>
                    <feFuncB id="brightness3" class="brgt" type="linear" slope="1"></feFuncB>
                </feComponentTransfer>
                <feComponentTransfer id="cFilter">
                    <feFuncR id="contrast1" class="cnst" type="linear" slope="1" intercept="-0.01"></feFuncR>
                    <feFuncG id="contrast2" class="cnst" type="linear" slope="1" intercept="-0.01"></feFuncG>
                    <feFuncB id="contrast3" class="cnst" type="linear" slope="1" intercept="-0.01"></feFuncB>
                </feComponentTransfer>
                <feComponentTransfer id="gFilter">
                    <feFuncR id="gamma1" class="gama" type="gamma" amplitude="1" exponent="1" offset="0"></feFuncR>
                    <feFuncG id="gamma2" class="gama" type="gamma" amplitude="1" exponent="1" offset="0"></feFuncG>
                    <feFuncB id="gamma3" class="gama" type="gamma" amplitude="1" exponent="1" offset="0"></feFuncB>
                </feComponentTransfer>
                <feColorMatrix id="saturation" type="saturate" values="1"></feColorMatrix>
            </filter>
        </defs>
        <g id="viewport-20160404045307934" class="svg-pan-zoom_viewport" transform="matrix(1.011111111111111,0,0,1.011111111111111,2.52222222222224,0)">
            <image xlink:href="https://www.ricoh.com/r_dc/caplio/r7/img/sample_03.jpg" class="img-responsive" width="90%" id="imageStyling" height="630px" style="height: 630px; width: 536px;" filter="url(#svgBlur)" name="ipsDF14-2-29Feb16-9d80-1a94a2e8c121"></image>
        </g>
    </svg>
</div>

    <button id="save">Save</button>

    <canvas id="canvas"></canvas>



$(document).ready(function() {
    var btn = document.querySelector('button');
    var svg = document.querySelector('svg');
    var canvas = document.querySelector('canvas');
    $("#save").click(function() {

        var canvas = document.getElementById('canvas');
        var ctx = canvas.getContext('2d');
        var data = (new XMLSerializer()).serializeToString(svg);
        var DOMURL = window.URL || window.webkitURL || window;

        var img = new Image();
        var svgBlob = new Blob([data], {
            type: 'image/svg+xml;charset=utf-8'
        });
        var url = DOMURL.createObjectURL(svgBlob);
        alert(JSON.stringify(url));
    })
});
用户名

由于安全原因,您将无法SVG转换成图像在许多情况下,尤其是在SVG指向外部来源。某些浏览器接受图像和CSS等内联资源,但是即使这样做,某些浏览器(如IE)也不允许这样做。

选项2是将图像绘制到画布上并使用上下文的新“ filter”属性目前,只有Firefox支持它,但前提是您通过标志(canvas.filters.enabled启用了它其他供应商对此想法有些冷淡,因此支持有限。但是,如果这是一个私人项目,那么它可能是一个很好的解决方案。过滤器允许您将过滤器直接应用于位图,而无需使用相同的定义来遍历SVG。如果这是一个公共项目,您将在下面保留选项3-

选项3是在代码中实现过滤器算法,并将其应用于画布。这还需要更多的工作(实际上要多得多),但是,嘿,我们是开发人员,编码很有趣!!:)

您可以在SVG规范以及其他地方找到过滤器的基础和公式

或检查一些已经通过箍的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将SVG过滤器应用的图像转换为二进制或base64,以保存在后端

来自分类Dev

如何将base64字符串转换为图像二进制文件并保存到服务器

来自分类Dev

使用Node.js将Base64图像转换为原始二进制文件

来自分类Dev

VBA将二进制图像转换为网页的base64编码的字符串

来自分类Dev

使用React将二进制流转换为BASE64

来自分类Dev

如何将二进制字符串转换为 base64

来自分类Dev

如何从bash将base64 utf-8编码的字符串转换为二进制文件?

来自分类Dev

在Java中将Base64转换为二进制字符串

来自分类Dev

将位置转换为二进制蒙版并使用此类蒙版过滤图像

来自分类Dev

Flutter将图像转换为二进制数据

来自分类Dev

将图像转换为二进制数据

来自分类Dev

如何将十进制数转换为二进制数,并将二进制数保存在数组中?

来自分类Dev

从数据库检索数据时,微风将二进制类型转换为base64字符串

来自分类Dev

C#MVC 5将动态二进制图像显示为base64

来自分类Dev

将图像从base64转换为图像并保存在Django的数据库中

来自分类Dev

NASM Linux x64 | 将二进制编码为 base64

来自分类Dev

HTML:不使用base64压缩嵌入二进制图像

来自分类Dev

HTML:嵌入二进制图像而不进行base64压缩

来自分类Dev

如何从 Azure 函数返回 base64 图像作为二进制数据

来自分类Dev

在Git中存储二进制Ruby Marshalled对象。使用过滤器转换为文本(JSON或YAML)并返回?

来自分类Dev

python 3.4 base64二进制文件

来自分类Dev

将二进制/ base64数据设置为VB脚本CDO中的附件

来自分类Dev

如何使用Ansible模块将Base64 var解码为二进制文件

来自分类Dev

JavaScript:将base64解码为二进制数据

来自分类Dev

将十六进制转换为二进制

来自分类Dev

将十六进制转换为二进制

来自分类Dev

将二进制转换为十六进制

来自分类Dev

将十六进制转换为二进制

来自分类Dev

将十六进制转换为二进制

Related 相关文章

  1. 1

    将SVG过滤器应用的图像转换为二进制或base64,以保存在后端

  2. 2

    如何将base64字符串转换为图像二进制文件并保存到服务器

  3. 3

    使用Node.js将Base64图像转换为原始二进制文件

  4. 4

    VBA将二进制图像转换为网页的base64编码的字符串

  5. 5

    使用React将二进制流转换为BASE64

  6. 6

    如何将二进制字符串转换为 base64

  7. 7

    如何从bash将base64 utf-8编码的字符串转换为二进制文件?

  8. 8

    在Java中将Base64转换为二进制字符串

  9. 9

    将位置转换为二进制蒙版并使用此类蒙版过滤图像

  10. 10

    Flutter将图像转换为二进制数据

  11. 11

    将图像转换为二进制数据

  12. 12

    如何将十进制数转换为二进制数,并将二进制数保存在数组中?

  13. 13

    从数据库检索数据时,微风将二进制类型转换为base64字符串

  14. 14

    C#MVC 5将动态二进制图像显示为base64

  15. 15

    将图像从base64转换为图像并保存在Django的数据库中

  16. 16

    NASM Linux x64 | 将二进制编码为 base64

  17. 17

    HTML:不使用base64压缩嵌入二进制图像

  18. 18

    HTML:嵌入二进制图像而不进行base64压缩

  19. 19

    如何从 Azure 函数返回 base64 图像作为二进制数据

  20. 20

    在Git中存储二进制Ruby Marshalled对象。使用过滤器转换为文本(JSON或YAML)并返回?

  21. 21

    python 3.4 base64二进制文件

  22. 22

    将二进制/ base64数据设置为VB脚本CDO中的附件

  23. 23

    如何使用Ansible模块将Base64 var解码为二进制文件

  24. 24

    JavaScript:将base64解码为二进制数据

  25. 25

    将十六进制转换为二进制

  26. 26

    将十六进制转换为二进制

  27. 27

    将二进制转换为十六进制

  28. 28

    将十六进制转换为二进制

  29. 29

    将十六进制转换为二进制

热门标签

归档