Convirtiendo imagenes SVG a otros formatos gráficos con SharpVectorGraphics

lunes, 25 de mayo de 2009

SharpVectorGraphics es un proyecto open source basado en .NET, y tiene como objetivo hacer la vida mas fácil a las aplicaciones que desean usar gráficos SVG (ver, generar o manipular)

SVG es una especificación de gráficos vectoriales usando XML del W3C, permitiendo a las aplicaciones intercambiar gráficos fácilmente usando un formato común, pudiendose renderizar una sola imagen a cualquier tamaño sin perder calidad. Lamentablemente solo firefox ofrece la posibilidad de renderizarlos sin necesidad de ningún plugin adicional, mientras que por ejemplo para IE es necesario instalar un ActiveX como lo es el SVG Viewer de Adobe.

Una de las principales características que ofrece este framework es poder convertir imagenes SVG a otros formatos usando el motor de renderización GDI, a continuación coloco un snippet de esta característica.


private Bitmap SVG2Bitmap(string conteSVG) {
GdiRenderer renderer = new GdiRenderer();
renderer.ClearMap();

SvgWindow window = new SvgWindow(200, 200, renderer);
SvgDocument document = new SvgDocument(window);
renderer.Window = window;
window.Renderer = renderer;
document.LoadXml(conteSVG);
window.Document = document;

ISvgSvgElement svgEl = window.Document.RootElement;
window.InnerWidth = (int)svgEl.Width.BaseVal.Value;
window.InnerHeight = (int)svgEl.Height.BaseVal.Value;

renderer.Render(window.Document as SvgDocument);

Bitmap rasterImage = ((GdiRenderer)window.Renderer).RasterImage;
return rasterImage;
}

..........
Bitmap image = SVG2Bitmap(strConte);
image.Save("c:\\imagenTransformada.gif", ImageFormat.Gif);
..........


Después de hacer muchas pruebas con imagenes SVG complejas, que no todos los visualizadores actuales son capaces de renderizar, creo que este es un proyecto bastante maduro, pese a estar en una version Alfa desde el 2005, además creo que este framework suple la NO traducción del proyecto Batik de Apache para poder ser usado con NFop en lo referente a generar documentos PDF con imagenes SVG incrustadas.

Enlaces relacionados:
SharpVectorGraphics (aka SVG#)
SVG-Wiki

- FIN -

0 comentarios: