无需写入磁盘即可压缩BufferedImage

时间:2016-02-02 09:17:22

标签: java image compression bufferedimage javax.imageio

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

我查看了ImageIO.write(image, "png", OutputStream),但我无法想到使用OutputStream来阻止将生成的压缩图像写入磁盘。

1 个答案:

答案 0 :(得分:2)

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

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

完成上述操作后,bytes将保留图片中包含的数据。

注意: ByteArrayOutputStream是OutputStream的特殊输入类型,您不需要关闭它,但如果您仍然这样做,它永远不会受到伤害。