Javascript 从svg元素保存大型svg

Javascript 从svg元素保存大型svg,javascript,svg,Javascript,Svg,我有一个图形脚本,它使用svg元素来绘制图形(没有库,只有JS)。我更喜欢使用画布,但我使用svg允许更直接地导出为svg 我目前正在将svg元素放入img标记中,然后保存它,例如: <img src='data:image/svg+xml;base64,[base64 encoded svg element here]'> 一切都适用于小图形。问题是一些图,特别是散点图,有30k+个元素。无论我使用base64编码还是仅在img src属性中使用svg xml,图像都会显示在

我有一个图形脚本,它使用svg元素来绘制图形(没有库,只有JS)。我更喜欢使用画布,但我使用svg允许更直接地导出为svg

我目前正在将svg元素放入img标记中,然后保存它,例如:

<img src='data:image/svg+xml;base64,[base64 encoded svg element here]'>

一切都适用于小图形。问题是一些图,特别是散点图,有30k+个元素。无论我使用base64编码还是仅在img src属性中使用svg xml,图像都会显示在浏览器中,但不会下载。当我试图将图像保存到文件时,我在Chrome中遇到了一个“失败-网络错误”


我可以想到其他方法,但它们都很烦人(比如在服务器上而不是在浏览器中生成SVG)。因此,首先,我想看看是否有一些简单的解决方案,比如压缩,或者有一个“浏览器端”来替代我上面使用的方法。

为什么首先要使用base-64编码?这增加了大量的开销。您可以将标记直接插入文档,也可以将其放入blob并使用blob URL作为图像源。@Brad能否详细介绍blob解决方案?一般来说,我没有使用base64,只是将svg xml放入img src属性中,正如我所说的,该属性对小型图很好,但对大型图不起作用。base64编码不是问题所在。你能把生成XML的代码显示在哪里吗?@Brad aye,blob解决了这个问题。你为什么要用base-64编码?这增加了大量的开销。您可以将标记直接插入文档,也可以将其放入blob并使用blob URL作为图像源。@Brad能否详细介绍blob解决方案?一般来说,我没有使用base64,只是将svg xml放入img src属性中,正如我所说的,该属性对小型图很好,但对大型图不起作用。base64编码不是问题所在。你能把生成XML的代码显示在哪里吗?@Brad aye,blob解决了问题