javascript - 使用 Fabric Js 将 Svg 转换为 Canvas 会污染 Canvas

标签 javascript html svg html5-canvas fabricjs

我正在使用fabric.js将svg转换为canvas,我使用的代码在chrome中工作正常,但在IE 11中创建的canvas被污染,从而阻止我从canvas读取数据,下面是我的代码使用

    var d3canvas = document.createElement('canvas');
    d3canvas.id = canvasId;

    fabric.loadSVGFromString(svg.node().parentNode.innerHTML, function (objects, options) {
        var canvasObj = new fabric.Canvas(canvasId);
        var obj = fabric.util.groupSVGElements(objects, options);
        canvasObj.add(obj).renderAll();

        var canvasdata = d3canvas.toDataURL("image/bmp");//this line causes error as canvas is tainted
}

我的问题是是否有一种方法可以从 svg 创建 Canvas 而不污染 Fabric.js 中的 Canvas ?

注意:我已经使用 canvg 将 svg 转换为 canvas,但由于 svg 很复杂,因此无法正确转换为 canvas

最佳答案

首先取消选择 Canvas 上的所有对象,然后使用下面的代码将 Canvas 转换为 SVG。

canvas.deactivateAllWithDispatch();
canvas.renderAll();
var image   = canvas.toSVG();
var svg_image = "data:image/svg+xml,"+encodeURIComponent(image);

您将把 SVG 图像值放入 svg_image 变量中。

关于javascript - 使用 Fabric Js 将 Svg 转换为 Canvas 会污染 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42688340/

相关文章:

javascript - 有没有办法使用 setTimeout 为我的代码添加冷却时间,这样人们就不会向命令发送垃圾邮件?

javascript - Dojo 元素/小部件定位,我做错了什么?

javascript - 如何清除 aurelia 中的文件输入绑定(bind)

jquery - 交换 div 框

css - 概述和部分填充 SVG 形状

javascript - 页面上有 'use' 标签,但我找不到 'def' 标签

javascript - 使用 getElementsByClassName 获取数组

javascript - D3.JS V4 在添加/更新数据后更新图表元素

javascript - 需要谷歌地图的文本标签图钉

typescript - 无法在 typescript 中导入svg文件