You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Christian Sengstock <cs...@gmail.com> on 2006/07/13 21:21:57 UTC

How to send a "mime-type: image/jpeg" response generated from a BufferedImage

Hello list,

in my application i generate dynamically a BufferedImage object and i
want to complete the pipeline with sending the image as a "mime-type:
image/jpeg" response.

At the moment i have a matcher which takes the request and calls a
flowScript function which in turn handles the dynamic creation of the
BufferedImage. Afterwards i save the image to disk and send the URI of
the image-file via the cocoon.sendPage( <filename.jpeg> ) function to
the sitemap, where a reader handles the proper response as a mime-type
image/jpeg.

This is working for me but i thought that there might be a better
approach to do this. Maybe without saving the BufferedImage to disk.

Can anybody give me a hint how to create a "mime-type: image" response
out of a BufferedImage? Maybe it's possible by extending a reader or
by using a serializer?

Thanx a lot,
Chris

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: How to send a "mime-type: image/jpeg" response generated from a BufferedImage

Posted by Christian Sengstock <cs...@gmail.com>.
Hi again,

2006/7/14, Jason Johnston <co...@lojjic.net>:
> Christian Sengstock wrote:
> > Hello list,
> >
> > in my application i generate dynamically a BufferedImage object and i
> > want to complete the pipeline with sending the image as a "mime-type:
> > image/jpeg" response.
> >
> > At the moment i have a matcher which takes the request and calls a
> > flowScript function which in turn handles the dynamic creation of the
> > BufferedImage. Afterwards i save the image to disk and send the URI of
> > the image-file via the cocoon.sendPage( <filename.jpeg> ) function to
> > the sitemap, where a reader handles the proper response as a mime-type
> > image/jpeg.
> >
> > This is working for me but i thought that there might be a better
> > approach to do this. Maybe without saving the BufferedImage to disk.
> >
> > Can anybody give me a hint how to create a "mime-type: image" response
> > out of a BufferedImage? Maybe it's possible by extending a reader or
> > by using a serializer?
>
>
> If you can get the content of your BufferedImage as an InputStream or
> byte[] array (sorry I don't know that API), then you can pass it along
> as view data in sendPage(), and serve it up with the standard
> ResourceReader and the ModuleSource:
>
>
> === flowscript: ===
>
> var imageInputStream = ...
> cocoon.sendPage("image-pipeline", {imageInputStream:imageInputStream});
>
>
> ==== sitemap: ===
>
> <map:match pattern="image-pipeline">
>    <map:read src="module:flow-attr:imageInputStream"
>              mime-type="image/jpeg" />
> </map:match>
>
>
> --Jason
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>

thanx a lot, that solved my problem!
this is how i did it (in fact like you told it) ...

### my java class #
/** method to create an inputStream out of a bufferedImage */
public InputStream getInputStream (String dynamicImagePara) {
   // getting a bufferedImage dynamically
   BufferedImage image = createImage (dynamicImagePara);

   // converting to inputStream - found in the web
   ByteArrayOutputStream baos = new  ByteArrayOutputStream();
   ImageIO.write(image, "jpeg", baos);
   InputStream is = new ByteArrayInputStream(baos.toByteArray());

   return is
}

### FlowScript #
 var inputStream =  aboveObject.getInputStream ( parameter );
 cocoon.sendPage("wms-pipe", { "inputStream" : inputStream });

### SiteMap #
<map:match pattern="wms-pipe">
  <map:read src="module:flow-attr:inputStream" mime-type="image/jpeg" />
</map:match>


thanx,
chris

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: How to send a "mime-type: image/jpeg" response generated from a BufferedImage

Posted by Jason Johnston <co...@lojjic.net>.
Christian Sengstock wrote:
> Hello list,
> 
> in my application i generate dynamically a BufferedImage object and i
> want to complete the pipeline with sending the image as a "mime-type:
> image/jpeg" response.
> 
> At the moment i have a matcher which takes the request and calls a
> flowScript function which in turn handles the dynamic creation of the
> BufferedImage. Afterwards i save the image to disk and send the URI of
> the image-file via the cocoon.sendPage( <filename.jpeg> ) function to
> the sitemap, where a reader handles the proper response as a mime-type
> image/jpeg.
> 
> This is working for me but i thought that there might be a better
> approach to do this. Maybe without saving the BufferedImage to disk.
> 
> Can anybody give me a hint how to create a "mime-type: image" response
> out of a BufferedImage? Maybe it's possible by extending a reader or
> by using a serializer?


If you can get the content of your BufferedImage as an InputStream or 
byte[] array (sorry I don't know that API), then you can pass it along 
as view data in sendPage(), and serve it up with the standard 
ResourceReader and the ModuleSource:


=== flowscript: ===

var imageInputStream = ...
cocoon.sendPage("image-pipeline", {imageInputStream:imageInputStream});


==== sitemap: ===

<map:match pattern="image-pipeline">
   <map:read src="module:flow-attr:imageInputStream"
             mime-type="image/jpeg" />
</map:match>


--Jason

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org