Hi Thierry,
Thanks your advice. I tried dynamic renderer also. It has not
improved the memory usage much. More over peroformance is too worst. I am
sending the code which converts svg file to buffered image for desired size.
Please have a look at and suggest me to improve performance and memory.
Thanks in advance
Bala
// import all required classes
public class SVGToImage
{
StaticRenderer renderer;
UserAgent userAgent;
DocumentLoader loader;
BridgeContext ctx;
BufferedImage image;
BufferedImage display;
File svgFile;
Dimension size;
SVGToImage(File svgFile, Dimension size)
{
this.svgFile = svgFile;
if(size == null)
size = Toolkit.getDefaultToolkit().getScreenSize();
else
this.size = size;
//renderer = new StaticRenderer();
renderer = new DynamicRenderer();
userAgent = new UserAgentAdapter();
loader = new DocumentLoader(userAgent);
ctx = new BridgeContext(userAgent, loader);
display = new BufferedImage(size.width, size.height,
BufferedImage.TYPE_INT_BGR);
buildImage();
}
public BufferedImage buildImage()
{
renderer.setDoubleBuffered(true);
GraphicsNode gvtRoot = null;
GVTBuilder builder = new GVTBuilder();
try
{
//System.out.println("Reading: " + svgFile);
Document svgDoc =
loader.loadDocument(svgFile.toURL().toString());
//System.out.println("Building: " + svgFile);
gvtRoot = builder.build(ctx, svgDoc);
//System.out.println("Rendering: " + svgFile);
renderer.setTree(gvtRoot);
Element elt = ((SVGDocument)svgDoc).getRootElement();
//System.out.println("display" + display);
renderer.setTransform(ViewBox.getViewTransform
(null, elt, display.getWidth(),
display.getHeight()));
renderer.updateOffScreen(display.getWidth(),display.getHeight());
Rectangle r = new Rectangle(0,
0,display.getWidth(),display.getHeight());
renderer.repaint(r);
image = renderer.getOffScreen();
//System.out.println("Painting: " + image);
//Graphics2D g2d = display.createGraphics();
//g2d.setColor(new Color(0,0,0));
//g2d.drawImage(image, null, 0, 0);
return image;
}catch(Exception e)
{
e.printStackTrace();
return null;
}
}
public static void main(String arg[])
{
try
{
File f = new
File("C:\\GE-Enter\\SVG\\batik-1.1.1\\samples\\Tri.svg");
new SVGToImage(f,null);
}catch(Exception e)
{
e.printStackTrace();
}
}
}
"THIS E-MAIL MESSAGE ALONG WITH ANY ATTACHMENTS IS INTENDED ONLY FOR THE
ADDRESSEE and may contain confidential and privileged information.
If the reader of this message is not the intended recipient,
you are notified that any dissemination, distribution or copy of this
communication is strictly Prohibited.
If you have received this message by error, please notify us
immediately, return the original mail to the sender and delete the
message from your system."
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]