You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by th...@kodak.com on 2011/05/12 12:32:01 UTC

Re: Generate my own image

Hi Alexander,

Alexander Shyrokov <sh...@stsci.edu> wrote on 04/28/2011 09:14:04 AM:

> I have a method that generates an array of bytes, which can be 
> represented as a two dimensional image. I would like to show this image 
> as a background image in batik. I do not want to save the array to disk 
> (as image) and then load it into batik. Instead I would like to provide 
> the array to the batik. I though that using ParsedURLData can help me, 
> but I can not figure out how to make it work. Any suggestions?

        So ParsedURL could help if your image data was in JPEG or PNG 
format, but I suspect
it isn't since you mention it's 2D.  Assuming your bytes are RGB color 
values for the pixels in the
image I would suggest figuring out how to wrap that data into the 
java.awt.image.BufferedImage.

        Then you could build a o.a.batik.gvt.RasterImageNode that you 
insert into the GVT tree.
You can take a BufferedImage and set it on the RasterImageNode.  You might 
look at the 
o.a.batik.ext.awt.image.codec.jpeg.JPEGRegistryEntry in particular the 
lines:

                cr = GraphicsUtil.wrap(image);
                        filt = new RedRable(cr);

        Which wrap a standard buffered Image such that it's suitable to 
set on a RasterImageNode
(it allows it to scale properly).

        Personally I'd probably encode the image as a JPEG or PNG and
set it as a 'data' URL since that would avoid the direct mucking with
the GVT tree (generally problematic).  The other option is if it will
always be the 'background' would be to modify the Canvas to use your
image as the background fill.