【问题标题】:canvg doesn't work with svg already placed in body?canvg 不适用于已放置在正文中的 svg?
【发布时间】:2014-08-23 11:25:00
【问题描述】:

我想将我的 SVG 转换为 CANVAS,然后将其保存为图像。我已经在我的页面中由 javascript 生成了 svg。我使用此代码:

$("#menu-save-image").click(function () {
    var svg = document.getElementsByTagName('svg');
    var canvas = document.getElementById("test");
    canvg(canvas, svg);

    // or second way
    var c = document.getElementById('test');
    var ctx = c.getContext('2d');
    ctx.drawSvg(svg, 0, 0, 500, 500);


});

两种方法都行不通。为什么?

【问题讨论】:

    标签: javascript canvas svg canvg


    【解决方案1】:

    canvg 方法需要 SVG 源字符串(或 url 或 XMLDocument),因此您应该像这样使用 XMLSerializer 将 svg 元素转换为 svg 源。

    var svg = document.querySelector('svg');
    var serializer = new XMLSerializer();
    var svgString = serializer.serializeToString(svg);
    var canvas = document.getElementById("test");
    canvg(canvas, svgString);
    

    https://code.google.com/p/canvg/source/browse/trunk/canvg.js

    【讨论】:

    • 我收到了这个错误。 Attr.nodeValue' is deprecated. Please use 'value' instead. canvg.js:725 3 ERROR: Element 'feComponentTransfer' not yet implemented. canvg.js:2619 Uncaught TypeError: undefined is not a function canvg.js:2526
    猜你喜欢
    • 1970-01-01
    • 2016-01-25
    • 2017-12-19
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2013-10-23
    • 2017-09-19
    相关资源
    最近更新 更多