如何将BufferedImage转换为InputStream?

13 java bufferedimage inputstream

我正在使用servlet上传图像.要执行调整大小操作,我将InputStream转换为BufferedImage.现在我想将它保存在mongoDB中.因为,据我所知,我是mongoDB的新手,GridFS采用InputStream.

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

SLa*_*aks 12

您需要将BufferedImage保存到ByteArrayOutputStream使用ImageIO该类,然后创建一个ByteArrayInputStreamfrom toByteArray().

  • 为什么这有必要?这不会将额外的(大)字节数组加载到内存中吗? (9认同)

Sor*_*ter 9

试试这个

ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(buffImage, "jpeg", os);                          // Passing: ?(RenderedImage im, String formatName, OutputStream output)
InputStream is = new ByteArrayInputStream(os.toByteArray());
Run Code Online (Sandbox Code Playgroud)

  • 不需要在任何地方关闭任何东西吗?我不是要刻薄,我只是不知道;) (2认同)

Edw*_*d83 8

首先,你必须得到你的"字节":

byte[] buffer = ((DataBufferByte)(bufferedImage).getRaster().getDataBuffer()).getData();
Run Code Online (Sandbox Code Playgroud)

然后使用ByteArrayInputStream(byte [] buf)构造函数创建InputStream;