2014-09-27 2 views
3

Я не могу получить URI базы данных base64 и SVG для отображения в качестве изображения.Base64 SVG images

Я попробовал <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?

ответ

15

Когда embeding SVG, как это, не забудьте установить xmlns для svg:

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>'); 

Если есть xlink префикс, используемый в ваших SVG элементов, вы должны также добавить xmlns:xlink="http://www.w3.org/1999/xlink"

+1

Отлично, и спасибо за 'xlink' тоже. –

Смежные вопросы