I am attempting to render an SVG image file as a java.awt.Image, or one
of its subclasses like java.awt.image.BufferedImage. I have attempted to
directly render the SVG file and I have also attempted to transcode it.
I am currently using Batik version 1.1.

I have achieved the most success with the following code snippet; however,
the BufferedImage that is returned is the correct shape without any colors
or details being drawn. I feel that I am missing some step in the rendering
process, and I have looked in detail at the Batik documentation and mailing
list archives to no avail.


public static Image renderSVGDocument( URL url, int x, int y ){
    // Create a rendereing context.
    UserAgent      userAgent = new UserAgentAdapter();
    DocumentLoader loader    = new DocumentLoader( userAgent );
    Document       doc       = null;
    try {
        doc = loader.loadDocument( url.toString() );
    } catch( Exception ex ){
        ex.printStackTrace();
    }
    BridgeContext  ctx = new BridgeContext(userAgent, loader);

    // Create a buffered image.
    BufferedImage bufImg =
        new BufferedImage( x, y, BufferedImage.TYPE_INT_ARGB );
    Graphics2D graphics = GraphicsUtil.createGraphics( bufImg );

    // Create a builder and root node.
    GVTBuilder   builder = new GVTBuilder();
    GraphicsNode root = null;

    // Render the SVG image.
    try {
        root = builder.build(ctx, doc);
        root.paint(graphics);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return bufImg;
}


Thanks in advance for your assistance!

Warren W. Thompson

Beer is proof that God loves us and wants us to be happy.
                                            --Benjamin Franklin

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to