Есть ли способ рисования файла SVG на холсте HTML5 по умолчанию? Google Chrome поддерживает загрузку SVG как изображения (и просто использование drawImage
), но консоль разработчика предупреждает об этом resource interpreted as image but transferred with MIME type image/svg+xml
.
Я знаю, что есть возможность конвертировать SVG в команды canvas (как в этом вопросе ), но я надеюсь, что это не нужно. Меня не волнуют старые браузеры (поэтому, если FireFox 4 и IE 9 будут поддерживать что-то, этого достаточно).
Ответы:
РЕДАКТИРОВАТЬ 16 декабря 2019
Path2D поддерживается всеми основными браузерами в настоящее время
РЕДАКТИРОВАТЬ 5 ноября 2014
Теперь вы можете использовать
ctx.drawImage
для отрисовки HTMLImageElements с исходным кодом .svg в некоторых, но не во всех браузерах . Chrome, IE11 и Safari работают, Firefox работает с некоторыми ошибками (но по ночам их исправили).Живой пример тут . Вы должны увидеть зеленый квадрат на холсте. Второй зеленый квадрат на странице - это тот же
<svg>
элемент, который вставлен в DOM для справки.Вы также можете использовать новые объекты Path2D для рисования SVG (строки) путей. Другими словами, вы можете написать:
Живой пример этого здесь.
Старый ответ потомков:
Нет ничего родного, что позволяет вам использовать SVG-пути в canvas. Вы должны преобразовать себя или использовать библиотеку, чтобы сделать это для вас.
Я бы посоветовал заглянуть в canvg:
http://code.google.com/p/canvg/
http://canvg.googlecode.com/svn/trunk/examples/index.htm
источник
drawImage
. Но я все еще получаю это предупреждение. От куда это?Извините, у меня недостаточно репутации, чтобы комментировать ответ @Matyas, но если изображение svg также находится в base64, оно будет отображено на выходе.
Демо-версия:
источник
img
теги вsvg
и просто рисовать изображения на холсте отдельно после этого.Вы можете легко нарисовать простые
svg
буквы на холсте:Примечание . Единственным недостатком метода является то, что он не может рисовать изображения, встроенные в
svg
. (см. демонстрацию)Демонстрация:
(Обратите внимание, что встроенное изображение видно только в
svg
)источник
В Mozilla есть простой способ рисования SVG на холсте, который называется « Рисование объектов DOM на холсте ».
источник
Как говорит Саймон выше, использование drawImage не должно работать. Но, используя библиотеку canvg и:
Это происходит по ссылке, предоставленной Саймоном выше, в которой есть ряд других предложений и указывается, что вы хотите либо дать ссылку, либо загрузить canvg.js и rgbcolor.js. Это позволяет вам манипулировать SVG-кодом и загружать его либо через URL, либо с помощью встроенного SVG-кода между тегами svg в функциях JavaScript.
источник