1
// svg格式转为base64
function svgToBase(svgCode?: string) {
const utf8Bytes = new TextEncoder().encode(svgCode);
return 'data:image/svg+xml;base64,' + btoa(String.fromCharCode.apply(null, utf8Bytes));
}
2
function svgToBase64(svgString) {
// 对SVG字符串进行编码
const encodedSvg = encodeURIComponent(svgString).replace(/%([0-9A-F]{2})/g, function(match, p1) {
return String.fromCharCode('0x' + p1);
});
// 将编码后的字符串转换为base64
const base64 = btoa(encodedSvg);
return 'data:image/svg+xml;base64,' + base64;
}
改变svg颜色
function setSvgColor(svgString: string, color: string) {
// 解析SVG字符串为DOM对象
const parser = new DOMParser();
const svgDoc = parser.parseFromString(svgString, 'image/svg+xml');
// 查找SVG中的所有fill属性,并设置新的颜色
const elements = svgDoc.querySelectorAll('[fill]');
elements.forEach((element) => {
element.setAttribute('fill', color);
});
// 将SVG DOM对象序列化为字符串
return new XMLSerializer().serializeToString(svgDoc.documentElement);
}
不行
// 返回data URI
return 'data:image/svg+xml;charset=utf-8,' + window.btoa(encodeURI(svgCode || ''));