I'm writing a Web application that let user upload images in several formats (e.g. png,jpg,bmp). After the image has been uploaded the system should convert it to "png" and scale it to a predefined resolution.
To convert the image I use the handy method:
javax.imageio.ImageIO.write(im, type, baos);
Here's where the problem start. The first argument of Image javax.imageio.ImageIO.write is a RenderedImage. The Java Doc states that the only known implementation is BufferedImage.
I try to find a way to convert a java.awt.Image to a BufferedImage, but it doesn't seems possible. However, it is possible to draw an image on a BufferedImage.
The problem is that creating a new BufferedImage each time is very memory expensive. I can start creating a pool of BufferedImage but I'm looking for clever/news ideas.
Try Thumbnailator library: http://code.google.com/p/thumbnailator/
Example code:
Thumbnails.of("large-picture.jpg")
.scale(1.0)
.outputFormat("png")
.toOutputStream(os);
Library offers also much more like scaling, sizing, cropping, rotating, watermarking etc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With