xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hamel, S├ębastien <SHa...@optinf.ca>
Subject BufferedImage black background problem
Date Wed, 08 Apr 2009 16:30:28 GMT
Hi,

 

I try to convert an SVG file to a BufferedImage and to use that BufferedImage to create a
GIF, JPG, etc... (I know there is a transcoder to do that...). The problem is that I always
get a black background on all my images GIF and JPEG.

 

There is two possible sources for the problem :

1.       The conversion from SVG to the BufferedImage

2.       The conversion from the BufferedImage to the GIF, JPEG from the sun library javax.imageio.ImageIO;

 

I suspect there is a problem from the first option since I did  a test to convert a SVG to
a BufferedImage and I used the later one to print on a AWT paint component: I saw the same
black background.

 

The simplified code used to convert from SVG to the BufferedImage is the following 

 

      public BufferedImage getImage(SVGDocument svgDocument, int width, int height) {

            // Paint svg into image buffer

            //BufferedImage bufferedImage = new BufferedImage(width, height,

                  //    BufferedImage.TYPE_USHORT_565_RGB);

            BufferedImage bufferedImage = new BufferedImage(width, height,

                        BufferedImage.TYPE_3BYTE_BGR);

            Graphics2D g2d = (Graphics2D) bufferedImage.getGraphics();

 

            // For a smooth graphic with no jagged edges or rastorized look.

            

            

            g2d.setBackground(Color.WHITE);

            

            g2d.setRenderingHint(RenderingHints.KEY_RENDERING , 

                        RenderingHints.VALUE_RENDER_QUALITY);

            

            g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, 

                        RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);

            

            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

                        RenderingHints.VALUE_ANTIALIAS_OFF);

            

            g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,

                        RenderingHints.VALUE_INTERPOLATION_BILINEAR);

 

            // Scale image to desired size

            Element elt = svgDocument.getRootElement();

            

            AffineTransform usr2dev = ViewBox.getViewTransform(null, elt, width,

                        height, null);

            g2d.transform(usr2dev);

            

 

 

            UserAgent      userAgent = new UserAgentAdapter();

            DocumentLoader loader = new DocumentLoader(userAgent);

            GVTBuilder     builder = new GVTBuilder();

            BridgeContext ctx  = new BridgeContext(userAgent, loader);

 

            ctx.setDynamicState(BridgeContext.DYNAMIC);

            GraphicsNode rootSvgNode = builder.build(ctx, svgDoc);

 

            

            rootSvgNode.paint(g2d);

 

            // Cleanup and return image

            g2d.dispose();

            return bufferedImage;

      }

 

Anyone has an idea on the problem??

 

Thanks,

 

S├ębastien


Mime
View raw message