我读了这个:Is there a way to convert SVG files to HTML5's canvas compatible commands?并尝试了谷歌。
是否有原生(跨浏览器)方式?浏览器在屏幕上显示SVG文档后,SVG文档在屏幕上显示为像素,将这些像素作为图像提供给用户是最简单的任务。
答案 0 :(得分:1)
Paperjs是一个围绕画布的漂亮的小包装库,它有一个SVG import function。
答案 1 :(得分:1)
This is now possible native.
来自MDN,
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var data = '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">' +
'<foreignObject width="100%" height="100%">' +
'<div xmlns="http://www.w3.org/1999/xhtml" style="font-size:40px">' +
'<em>I</em> like ' +
'<span style="color:white; text-shadow:0 0 2px blue;">' +
'cheese</span>' +
'</div>' +
'</foreignObject>' +
'</svg>';
var DOMURL = window.URL || window.webkitURL || window;
var img = new Image();
var svg = new Blob([data], {type: 'image/svg+xml'});
var url = DOMURL.createObjectURL(svg);
img.onload = function() {
ctx.drawImage(img, 0, 0);
DOMURL.revokeObjectURL(url);
}
img.src = url;
只需用自己的svg替换svg字符串即可。
PS。通过在画布上渲染和渲染为普通DOM,性能似乎要好得多! Perf for render to canvas似乎始终比<{3}}快 50倍(在Chrome,Safari和移动Chrome上测试过)。