Quiero convertir SVG en imágenes de mapa de bits (como JPEG, PNG, etc.) a través de JavaScript.
javascript
svg
Zain
fuente
fuente

Respuestas:
Así es como puedes hacerlo a través de JavaScript:
fuente
toImage()y tambiéndownload()para una imagen descargada automáticamente.La solución jbeard4 funcionó a la perfección.
Estoy usando Raphael SketchPad para crear un SVG. Enlace a los archivos en el paso 1.
Para un botón Guardar (la identificación de svg es "editor", la identificación del lienzo es "lienzo"):
fuente
<svg>...</svgpero la función jquery html () no agrega la etiqueta svg, por lo que este código funciona para mí, pero necesitaba editar canvg livecanvg('canvas', '<svg>'+$("#editor").html()+'</svg>');$(selector).html()al padre de tu elemento svg , funcionaráhtml()en envoltorios, o construir manualmente lasvgetiqueta principal , que incluso podría tener atributos que omita con este truco. Solo use$(svg_elem)[0].outerHTMLle da la fuente completa de la svg y su contenido. Solo digo ...Esto parece funcionar en la mayoría de los navegadores:
fuente
.msToBlob()La solución para convertir SVG a blob URL y blob URL a imagen png
fuente
Escribí esta clase de ES6 que hace el trabajo.
Así es como lo usas
Si desea una versión JavaScript de vainilla, puede dirigirse al sitio web de Babel y transpilar el código allí.
fuente
Aquí hay una solución del lado del servidor basada en PhantomJS. Puede usar JSONP para realizar una llamada de dominio cruzado al servicio de imágenes:
https://github.com/vidalab/banquo-server
Por ejemplo:
http: // [host] /api/https%3A%2F%2Fvida.io%2Fdocuments%2FWgBMc4zDWF7YpqXGR/viewport_width=980&viewport_height=900&delay=5000&selector=%23canvas
Luego puede mostrar la imagen con la etiqueta img:
Funciona a través del navegador.
fuente
cambiar
svgpara que coincida con tu elementofuente
Uncaught TypeError: Failed to execute 'serializeToString' on 'XMLSerializer': parameter 1 is not of type 'Node'.Svgapngse puede convertir dependiendo de las condiciones:svgestá en formato SVG (cadena) rutas :new Path2D()y establecersvgcomo parámetrocanvas.toDataURL()comosrc.ejemplo:
Tenga en cuenta que
Path2Dno es compatibleiey es parcialmente compatible en edge. Polyfill resuelve eso: https://github.com/nilzona/path2d-polyfillsvgblob y dibuja sobre lienzo usando.drawImage():Buena descripción: http://ramblings.mcpher.com/Home/excelquirks/gassnips/svgtopng
Tenga en cuenta que en ie obtendrá una excepción en el escenario de canvas.toDataURL (); Es porque IE tiene una restricción de seguridad demasiado alta y trata el lienzo como de solo lectura después de dibujar la imagen allí. Todos los demás navegadores restringen solo si la imagen es de origen cruzado.
canvgbiblioteca de JavaScript. Es una biblioteca separada pero tiene funciones útiles.Me gusta:
fuente
Recientemente descubrí un par de bibliotecas de rastreo de imágenes para JavaScript que pueden generar una aproximación aceptable al mapa de bits, tanto en tamaño como en calidad. Estoy desarrollando esta biblioteca de JavaScript y CLI:
https://www.npmjs.com/package/svg-png-converter
Que proporciona una API unificada para todos ellos, compatible con el navegador y el nodo, sin depender del DOM, y una herramienta de línea de comando.
Para convertir logotipos / dibujos animados / imágenes similares, hace un excelente trabajo. Para fotos / realismo, se necesitan algunos ajustes, ya que el tamaño de salida puede crecer mucho.
Tiene un parque infantil, aunque en este momento estoy trabajando en uno mejor, más fácil de usar, ya que se han agregado más funciones:
https://cancerberosgx.github.io/demos/svg-png-converter/playground/#
fuente