I am uploading images using servlet. To perform resize operations i am converting InputStream to BufferedImage. Now i want to save it in mongoDB. Since, i am new to mongoDB as far as i know, GridFS takes InputStream.
So, is there any way to convert BufferedImage to InputStream?
BufferedImage
➙
ByteArrayOutputStream
➙
byte[]
➙
ByteArrayInputStream
Use the
ImageIO.write
method to make a
BufferedImage
(which is a
RenderedImage
) into a
ByteArrayOutputStream
. From there get a byte array (
byte[]
), feeding that into an
InputStream
of type
ByteArrayInputStream
.
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(buffImage, "jpeg", os); // Passing: (RenderedImage im, String formatName, OutputStream output)
InputStream is = new ByteArrayInputStream(os.toByteArray());
Both the ByteArrayOutputStream and InputStream implement AutoCloseable. So you can conveniently have those closed automatically by using try-with-resources syntax.