如何将缓冲图像转换为输入流? BufferedImage➙ ➙ ➙ByteArrayOutputStreambyte[]ByteArrayInputStream

2022-09-02 11:36:22

我正在使用 servlet 上传图像。为了执行调整大小操作,我正在将输入流转换为缓冲图像。现在我想把它保存在mongoDB中。因为,据我所知,我是mongoDB的新手,GridFS采用InputStream。

那么,有没有办法将BufferedImage转换为InputStream?


答案 1

BufferedImage➙ ➙ ➙ByteArrayOutputStreambyte[]ByteArrayInputStream

使用 ImageIO.write 方法将 BufferedImage(即 RenderedImage)制作成 ByteArrayOutputStream。从那里得到一个字节数组(),将其馈送到ByteArrayInputStream类型的输入流中。byte[]

ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(buffImage, "jpeg", os);                          // Passing: ​(RenderedImage im, String formatName, OutputStream output)
InputStream is = new ByteArrayInputStream(os.toByteArray());

和 实现自动关闭。因此,您可以使用 try-with-resources 语法方便地自动关闭它们。ByteArrayOutputStreamInputStream


答案 2

您需要使用 ImageIO将 BufferedImage 保存到 ByteArrayOutputStream,然后从 中创建 ByteArrayInputStreamtoByteArray()


推荐