需求说明
Java使用BufferedImage处理图片的时候,想实时知道处理后的图片占用的文件的大小。
实现
比较传统的做法是先把BufferedImage存成文件,然后读取文件的bytes大小。不过这种做法显然有点迂回。下面是我使用的计算图片大小的方法,思路是先把BufferedImage转成图片字节流到ByteArrayOutputStream,然后计算ByteArrayOutputStream的字节数,这样就不用经过再保存文件到磁盘再读取的过程了。
代码如下:
// bufferedImage 之前的处理代码忽略 // BufferedImage bufferedImage = ... ByteArrayOutputStream tmp = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, "jpg", tmp); tmp.close(); byte[] bytes = tmp.toByteArray(); System.out.println("文件大小: " + (bytes.length/1024.0) + " KB");
文章评论