Ответ 1
Браузеры, поддерживающие HTML5 Canvas, также хорошо поддерживают SVG. Таким образом, вы можете сделать это:
var img = new Image;
img.onload = function(){ myCanvasContext.drawImage(img,0,0); };
img.src = "foo.svg";
Единственным недостатком этого метода является то, что если SVG находится вне вашего домена, холст станет испорченным; вы не сможете использовать getImageData()
для чтения полученного SVG, если это ваша цель.
Я привел пример этой техники на моем сервере: http://phrogz.net/tmp/canvas_from_svg.html
Я протестировал это и проверил, что он работает (и выглядит одинаково) на IE9, Chrome v11b, Safari v5 и Firefox v4.
[Изменить] Обратите внимание:
-
Chrome и Firefox в настоящее время "punt" в безопасности и запрещают вам читать холст (например,они были исправленыgetImageData()
илиtoDataURL()
) после того, как вы нарисуете любой SVG на холст (независимо от домена) -
В настоящее время Firefox имеет ошибку, в которой он отказывается рисовать SVG на холсте, если у SVG нет атрибутов
height
иwidth
.