在不写入磁盘的情况下压缩 BufferedImage

Compressing a BufferedImage without writing to disk

我想压缩 BufferedImage 而不向磁盘写入任何内容,因为图像代表来自视频源的帧,因此写入磁盘显然太慢了。

我查看了 ImageIO.write(image, "png", OutputStream) 但我想不出 OutputStream 使用什么来防止将生成的压缩图像写入磁盘。

您可以使用 ByteArrayOutputStream 将字节写入字节数组:

ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(image, "png", out);
byte[] bytes = out.toByteArray();

完成上述操作后,bytes 将保存图像包含的数据。

注意: ByteArrayOutputStream 是一种特殊的输入类型OutputStream,你不需要关闭它,但如果你仍然关闭它也无妨。