如何将<图像>元素添加到 SVG DOM
How can I add an <image> element to the SVG DOM
我有一个带有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});
});
这里有一种方法可以做到这一点:
var svgimg = document.createElementNS('http://www.w3.org/2000/svg','image');
svgimg.setAttributeNS(null,'height','200');
svgimg.setAttributeNS(null,'width','200');
svgimg.setAttributeNS('http://www.w3.org/1999/xlink','href', 'myimage.jpg');
svgimg.setAttributeNS(null,'x','10');
svgimg.setAttributeNS(null,'y','10');
svgimg.setAttributeNS(null, 'visibility', 'visible');
$('svg').append(svgimg);
相关文章:
- 如何判断何时将dom节点添加到文档中
- 向动态生成的DOM添加Angular自定义指令
- 如果移除并重新添加DOM元素,则ng单击绑定丢失
- 使用 Knockout 动态添加 dom 元素
- jquery使用$.on来添加dom元素
- 如何在 HTML 结构中添加 DOM 模型
- 如何强制.prepend()和.append()添加DOM对象,而不是文本
- AngularJS添加DOM元素
- 添加DOM视图太慢了,需要一种更好的方法来缓存一次视图并重用它供以后使用
- 带有模板的Dojo小部件,在小部件加载时更改模板(添加DOM元素)
- 添加 DOM 元素,什么是正确的方法
- 如何在画布上添加DOM对象
- 如何在每次迭代中添加DOM对象
- jQuery show()不是一个函数-用于添加DOM元素
- 只能添加dom元素,但不能删除它们
- 在单击按钮时动态添加DOM元素
- 添加 DOM 元素时获取通知
- 如何在React中添加dom
- 如何在Div背景中添加DOM图像对象
- 如何在按钮中添加DOM附加的功能