Quero converter SVG em imagens de bitmap (como JPEG, PNG etc.) através de JavaScript.
javascript
svg
Zain
fonte
fonte
Respostas:
Aqui está como você pode fazer isso através do JavaScript:
fonte
toImage()
e tambémdownload()
para obter uma imagem baixada automaticamente.A solução jbeard4 funcionou lindamente.
Estou usando o Raphael SketchPad para criar um SVG. Link para os arquivos na etapa 1.
Para um botão Salvar (o id do svg é "editor", o id do canvas é "canvas"):
fonte
<svg>...</svg
mas a função jquery html () não adicionar tag svg, de modo que este código funciona para mim, mas eu precisava para editar o canvg ao vivo paracanvg('canvas', '<svg>'+$("#editor").html()+'</svg>');
$(selector).html()
no pai de sua SVG elemento, ele vai trabalharhtml()
em wrappers ou construir manualmente asvg
tag pai - que pode até ter atributos que você deixa de fora com esse hack. Apenas use$(svg_elem)[0].outerHTML
fornece a fonte completa do svg e seu conteúdo. Apenas dizendo ...Isso parece funcionar na maioria dos navegadores:
fonte
.msToBlob()
A solução para converter SVG para URL de blob e URL de blob para imagem png
fonte
Eu escrevi essa classe ES6 que faz o trabalho.
Aqui está como você o usa
Se você quiser uma versão JavaScript de baunilha, poderá acessar o site da Babel e transpilar o código para lá.
fonte
Aqui está uma solução do lado do servidor baseada no PhantomJS. Você pode usar JSONP para fazer uma chamada entre domínios para o serviço de imagem:
https://github.com/vidalab/banquo-server
Por exemplo:
http: // [host] /api/https%3A%2F%2Fvida.io%2Fdocuments%2FWgBMc4zDWF7YpqXGR/viewport_width=980&viewport_height=900&delay=5000&selector=%23canvas
Então você pode exibir a imagem com a tag img:
Funciona através do navegador.
fonte
mude
svg
para combinar com seu elementofonte
Uncaught TypeError: Failed to execute 'serializeToString' on 'XMLSerializer': parameter 1 is not of type 'Node'.
Svg
apng
pode ser convertida de acordo com as condições de:svg
estiver no formato SVG (string) de caminhos :new Path2D()
e definirsvg
como parâmetrocanvas.toDataURL()
comosrc
.exemplo:
Observe que
Path2D
não é suportadoie
e parcialmente suportado na borda. O Polyfill resolve isso: https://github.com/nilzona/path2d-polyfillsvg
blob e desenhe na tela usando.drawImage()
:Boa descrição: http://ramblings.mcpher.com/Home/excelquirks/gassnips/svgtopng
Note que em ie você receberá uma exceção no palco do canvas.toDataURL (); Isso ocorre porque o IE possui uma restrição de segurança muito alta e trata a tela como somente leitura após desenhar a imagem lá. Todos os outros navegadores restringem apenas se a imagem for de origem cruzada.
canvg
biblioteca JavaScript. É uma biblioteca separada, mas possui funções úteis.Gostar:
fonte
Recentemente, descobri algumas bibliotecas de rastreamento de imagens para JavaScript que realmente são capazes de criar uma aproximação aceitável ao bitmap, tanto em tamanho quanto em qualidade. Estou desenvolvendo esta biblioteca JavaScript e CLI:
https://www.npmjs.com/package/svg-png-converter
Que fornece API unificada para todos eles, suportando navegador e nó, não dependendo do DOM, e uma ferramenta de linha de comando.
Para converter logotipos / desenhos animados / imagens semelhantes, ele faz um excelente trabalho. Para fotos / realismo, são necessários alguns ajustes, pois o tamanho da saída pode aumentar bastante.
Tem um playground, embora agora eu esteja trabalhando em um melhor, mais fácil de usar, pois mais recursos foram adicionados:
https://cancerberosgx.github.io/demos/svg-png-converter/playground/#
fonte