在浏览器中,使用js将svg转为图片
时间: 2024-03-11 13:46:47 浏览: 98
要将SVG转为图片,可以使用SVG转Canvas技术,将SVG绘制到Canvas上,然后再将Canvas转为图片。以下是一个基本的例子:
```javascript
// 获取SVG元素
const svg = document.querySelector('svg');
// 创建一个Image对象,用于保存生成的图片
const img = new Image();
// 创建一个Canvas元素
const canvas = document.createElement('canvas');
// 获取Canvas上下文对象
const ctx = canvas.getContext('2d');
// 获取SVG的宽高
const svgRect = svg.getBoundingClientRect();
// 设置Canvas的宽高与SVG相同
canvas.width = svgRect.width;
canvas.height = svgRect.height;
// 创建一个新的Image对象,用于绘制SVG
const svgImage = new Image();
// 将SVG转为Base64编码的data URL
const svgData = new XMLSerializer().serializeToString(svg);
const svgUrl = `data:image/svg+xml;base64,${btoa(svgData)}`;
// 在Image对象中加载SVG
svgImage.onload = () => {
// 将SVG绘制到Canvas上
ctx.drawImage(svgImage, 0, 0);
// 将Canvas转为图片
img.src = canvas.toDataURL('image/png');
};
// 加载SVG
svgImage.src = svgUrl;
```
在上面的代码中,我们首先获取了SVG元素,然后创建一个Canvas元素,获取了Canvas上下文对象,设置Canvas的宽高与SVG相同,并创建一个新的Image对象用于绘制SVG。接着,我们将SVG转为Base64编码的data URL,并在Image对象中加载SVG。当SVG加载完成后,我们将其绘制到Canvas上,并使用Canvas的toDataURL方法将Canvas转为图片。最终,我们可以通过img对象的src属性获取Base64编码的图片数据,或者将其设置为img元素的src属性,显示生成的图片。
阅读全文