Thanks for pointing me in the right direction Vincent! I've attached
the working code for converting an SVG file into a java.awt.Image below
for posterity.

public static Image transcodeSVGDocument( URL url, int x, int y ){
    // Create a PNG transcoder.
    Transcoder t = new PNGTranscoder();

    // Set the transcoding hints.
    t.addTranscodingHint( PNGTranscoder.KEY_WIDTH,  new Float(x) );
    t.addTranscodingHint( PNGTranscoder.KEY_HEIGHT, new Float(y) );

    // Create the transcoder input.
    TranscoderInput input = new TranscoderInput( url.toString() );

    ByteArrayOutputStream ostream = null;
    try {
        // Create the transcoder output.
        ostream = new ByteArrayOutputStream();
        TranscoderOutput output = new TranscoderOutput( ostream );

        // Save the image.
        t.transcode( input, output );

        // Flush and close the stream.
        ostream.flush();
        ostream.close();
    } catch( Exception ex ){
        ex.printStackTrace();
    }

    // Convert the byte stream into an image.
    byte[] imgData = ostream.toByteArray();
    Image img = Toolkit.getDefaultToolkit().createImage( imgData );

    // Wait until the entire image is loaded.
    MediaTracker tracker = new MediaTracker( new JPanel() );
    tracker.addImage( img, 0 );
    try {
        tracker.waitForID( 0 );
    } catch( InterruptedException ex ){
        ex.printStackTrace();
    }

    // Return the newly rendered image.
    return img;
}

Warren W. Thompson

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


Vincent Hardy wrote:
> 
> Warren,
> 
> The org.apache.batik.transcoder.image.ImageTranscoder class should
> be exactly what you want. If you are trying to convert images to
> PNG or JPEG, you may even be able to use the PNGTranscoder or the
> JPEGTranscoder directly. If you are trying to do something else,
> implementing your own ImageTranscoder and using
> PNGTranscode and JPEGTranscoder as sources of inspiration.
> 
> May be Thierry, who wrote the transcoder framework, will have more
> comments.
> 
> Cheers,
> Vincent.
> 
> "Warren W. Thompson" wrote:
> >
> > 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]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

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

Reply via email to