Браузеры, которые поддерживают 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.
[Edit] Обратите внимание:
В настоящее время Chrome и Firefox «защищаются» и не позволяют вам читать холст (например, getImageData()
или toDataURL()
) после того, как вы нарисовали любой SVG на холсте (независимо от домена) они были исправлены
В Firefox в настоящее время есть ошибка, из-за которой он отказывается рисовать SVG на холстеесли SVG не имеет атрибутов height
и width
.