Existe uma maneira padrão de desenhar um arquivo SVG em uma tela HTML5? O Google Chrome suporta o carregamento do SVG como uma imagem (e simplesmente o uso drawImage
), mas o console do desenvolvedor avisa queresource interpreted as image but transferred with MIME type image/svg+xml
.
Eu sei que uma possibilidade seria converter os comandos SVG para canvas (como nesta pergunta ), mas espero que isso não seja necessário. Eu não me importo com navegadores mais antigos (por isso, se o FireFox 4 e o IE 9 oferecem suporte a algo, isso é bom o suficiente).
Respostas:
EDIT 16 de dezembro de 2019
O Path2D é suportado por todos os principais navegadores agora
EDIT 5 de novembro de 2014
Agora você pode usar
ctx.drawImage
para desenhar HTMLImageElements que tenham uma fonte .svg em alguns navegadores, mas não em todos . Chrome, IE11 e Safari funcionam, o Firefox trabalha com alguns erros (mas todos os dias foram corrigidos).Exemplo ao vivo aqui . Você deve ver um quadrado verde na tela. O segundo quadrado verde na página é o mesmo
<svg>
elemento inserido no DOM para referência.Você também pode usar os novos objetos Path2D para desenhar caminhos SVG (string). Em outras palavras, você pode escrever:
Exemplo ao vivo disso aqui.
Resposta antiga da posteridade:
Não há nada nativo que permita o uso nativo de caminhos SVG na tela. Você deve se converter ou usar uma biblioteca para fazer isso por você.
Eu sugiro procurar no canvg:
http://code.google.com/p/canvg/
http://canvg.googlecode.com/svn/trunk/examples/index.htm
fonte
drawImage
. Mas ainda recebo esse aviso. De onde isso vem?Desculpe, não tenho reputação suficiente para comentar a resposta @Matyas, mas se a imagem do svg também estiver em base64, ela será atraída para a saída.
Demo:
fonte
img
tags no diretóriosvg
e apenas desenhar as imagens na tela separadamente posteriormente.Você pode facilmente desenhar
svg
s simples em uma tela:Nota: A única desvantagem do método é que ele não pode desenhar imagens incorporadas no
svg
. (veja demonstração)Demonstração:
(Observe que a imagem incorporada é visível apenas na
svg
)fonte
O Mozilla possui uma maneira simples de desenhar SVG na tela chamada " Desenhando objetos DOM em uma tela "
fonte
Como Simon disse acima, usar drawImage não deve funcionar. Mas, usando a biblioteca canvg e:
Isso vem do link que o Simon fornece acima, que contém várias outras sugestões e indica que você deseja vincular ou fazer o download de canvg.js e rgbcolor.js. Isso permite que você manipule e carregue um SVG, via URL ou usando código SVG embutido entre tags svg, nas funções JavaScript.
fonte