Base64 SVG图像

3

我无法将SVG的base64数据URI显示为图像。

我尝试使用<img><canvas>,但SVG都没有显示出来。

var url = 'data:image/svg+xml;base64,' + btoa('<svg height="100" width="100"><circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red"/></svg>');

document.getElementById('image').src = url;

var context = document.getElementById('canvas').getContext('2d');
var image = new Image();
image.src = url;
context.drawImage(image, 0, 0);
canvas, img {
    border: 1px solid black;
}
<img id="image" width="200" height="200">

<canvas id="canvas" width="200" height="200"></canvas>

在Chrome和Firefox中测试通过。

为什么SVG没有显示出来?

1个回答

16

当像这样嵌入SVG时,请记得为svg设置xmlns

var url = 'data:image/svg+xml;base64,' + 
           btoa('<svg xmlns="http://www.w3.org/2000/svg" height="100" width="100"><circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red"/></svg>');

如果您的SVG元素中使用了任何xlink前缀,您还应该添加xmlns:xlink="http://www.w3.org/1999/xlink"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接