2011-06-06 26 views
8

¿Qué métodos existen actualmente para convertir una imagen SVG a PNG o JPEG programáticamente usando C#?Convierte SVG a PNG o JPEG

He leído todas las preguntas sobre SO existentes sobre este tema, y ​​todas ellas implican el uso de un proceso externo para iniciar un programa de terceros. En mi caso, esta no es una opción, ya que pronto migraremos a Azure.

Lo que necesito hacer es cargar el archivo SVG desde el disco y, idealmente, convertirlo en algo que pueda usar el sistema. Dibujar clases para manipular.

¿Alguna idea?

+0

http://imagemagick.codeplex.com/ podría ser útil. – MGwynne

+0

¿Has resolevado tu problema? ¿Qué harías con nosotros? – Armance

+0

No, nunca lo hizo. Abandonamos ese enfoque. – Scott

Respuesta

4

Puede echar un vistazo a SVG Rendering Engine en CodePlex. Tiene una sobrecarga que tomará una secuencia en la memoria (su SVG) que luego se puede usar para convert to an image.

+2

gracias, estoy tratando de usar su sugerencia pero me sale el error 'Referencia de objeto no establecida en una instancia de un objeto" podría u [ayuda por favor] (http://stackoverflow.com/questions/8414324/convert-svg-to- imagen-programatically) – Armance

+0

También recibo el error "Referencia del objeto no configurado a una instancia de un objeto" cuando llamo al método Draw(). –

+0

@FrankHale - ¿La solución en el enlace de astrocybernaute le resultó útil? – keyboardP

4

Bien. Compartiré con mi solución para renderizar un archivo SVG redimensionado a un tamaño adecuado.

que instalar este paquete Nuget

Install-Package Svg 

Puede encontrar el código fuente del paquete en github here

Entonces, usted puede hacer esto:

var svgDocument = SvgDocument.Open(path); 
using (var smallBitmap = svgDocument.Draw()) 
{ 
    var width = smallBitmap.Width; 
    var height = smallBitmap.Height; 
    if (width != 2000)// I resize my bitmap 
    { 
     width = 2000; 
     height = 2000/smallBitmap.Width*height; 
    } 

    using (var bitmap = svgDocument.Draw(width, height))//I render again 
    { 
     bitmap.Save(pngPath, ImageFormat.Png); 
    } 
} 

Enjoy!

2

Todo lo que necesita hacer es instalar el paquete nuget SVG Rendering Library.

Install-Package Svg 

Y luego

 //read svg document from file system 
     var svgDocument = SvgDocument.Open("test.svg"); 
     var bitmap = svgDocument.Draw(); 
     //save converted svg to file system 
     bitmap.Save("test.png", ImageFormat.Png); 

Eso es todo.

+0

Cuando se utiliza en un bucle, esto produce basura después del primer archivo – toddmo

Cuestiones relacionadas