我有一个带有 jpg 图像的网页,用户在使用 Raphael 的基础上绘制了一个 SVG 涂鸦。
我想让用户在完成后保存一个合并的光栅化版本(我自己会用 SVG 版本做其他事情)
当用户单击保存时,我想将该背景图像作为元素添加到生成的 SVG DOM 中,然后使用 canvg 将 SVG 写入画布元素。最后,我使用 toDataUrl() 方法将其转换为 jpg。
我无法让中间部分工作——将图像添加到 DOM 的最佳方法是什么?当我使用下面的代码时,我收到一个 javascript 错误,提示 appendChild() 不是函数。
我想知道它是否与我如何使用 .html() 方法获取 SVG 有关 - 也许返回的内容没有被解释为真正的 SVG 文档?
非常感谢任何帮助。
function saveImage(){
var img = document.getElementById('canvas').toDataURL("image/png");
window.open(img,'Download');
}
$('#save').click(function(){
var svg = $('#editor').html();
// Create new SVG Image element. Must also be careful with the namespaces.
var svgimg = document.createElementNS("http://www.w3.org/2000/svg", "image");
svgimg.setAttributeNS("http://www.w3.org/1999/xlink", 'xlink:href', "myimage.jpg");
// Append image to SVG
svg.appendChild(svgimg);
canvg('canvas', svg, {renderCallback: saveImage(), ignoreMouse: true, ignoreAnimation: true, ignoreDimensions: true});
});