2012-01-19 13 views
7

Esa es la pregunta, lo he visto porque SVG-Salamander es lo suficientemente pequeño para mis proyectos. Pero no sé si puedo usarlo para eso ni cómo hacerlo.¿Puedo usar SVG Salamander para rasterizar SVG en archivos PNG? (¿y cómo puedo hacerlo?)

¿Alguna idea?

Si no puedo, ¿Conoces alguna otra pequeña rastra SVG a PNG en java?

gracias por todo.

he utilizar este código:?

public static void main(String[] args) throws IOException, SVGException { 
    // TODO Auto-generated method stub 

    File f = new File("./src/game_scheme.svg"); 
    SVGUniverse svgUniverse = new SVGUniverse(); 
    SVGDiagram diagram = svgUniverse.getDiagram(svgUniverse.loadSVG(f.toURL())); 
    BufferedImage bi = new BufferedImage(320, 240, BufferedImage.TYPE_INT_ARGB); 
    Graphics2D ig2 = bi.createGraphics(); 
    diagram.render(ig2); 
    ImageIO.write(bi, "PNG", new File("./yourImageName.png")); 

} 

Pero las imágenes no son suaves :(, alguna idea

+0

Tengo un problema similar, las imágenes png no son uniformes. ¿Hay alguna forma de arreglarlo? – ayachama

Respuesta

3

Sí, es posible Todo lo que necesita hacer es cargar el documento SVG usando. SVG Salamander, cree una Imagen Buffered en la que desee escribir, cree un contexto Graphics2D a partir de su Imagen Buffered, y luego llame al método render() en SVGDiagram para dibujar en su imagen.

Puede simplificar el proceso utilizando un SVGIcon . Manejará todas las partes internas de Salamander para Usted y usted pueden tratar su documento SVG como un icono Swing común.

Si planea convertir muchos archivos SVG a imágenes en la línea de comandos, también hay una tarea Ant que le permitirá convertir SVG en imágenes de un script ant.

SVG Salamander documentos de uso: http://svgsalamander.java.net/docs/use.html

Una demostración sencilla utilizando SVG Salamander con Swing: http://svgsalamander.java.net/docs/exampleCode/SVGIODemo.html

+0

No puedo usar Ant porque los renderizaré en .png cuando esté instalada la aplicación de Android. Pero gracias por la información, intentaré, entonces te contaré sobre el resultado. –

3

Si usted está viendo los bordes dentados, que se puede arreglar mediante la adición de gráficos de representación indirecta.

Además, es una buena idea llamar a disponer() cuando haya terminado con su contexto de gráficos.

Graphics2D ig2 = bi.createGraphics(); 
ig2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
diagram.render(ig2); 
ig2.dispose(); 

ImageIO.write(bi, "PNG", new File("./yourImageName.png")); 
+0

Voy a probar su código esta noche. Salamander es una gran lib, gracias por ello. –

+0

Lo he probado y se muestra muy bien. Eres un campeón gracias por esto. –

+0

Mi archivo SVG tiene muchos detalles en él. Tiene textos pequeños que se ven borrosos y no pueden leerse cuando se convierten a PNG. – ayachama