为什么使用Java ImageIO读取和写入JPEG会减小文件大小?

时间:2016-02-06 01:09:42

标签: java flashair

我正在使用Java的javax.imageio.ImageIO来读取我的FlashAir 32Gb(第二代)中的内容并将它们写入我的本地硬盘。我可以读取并保存文件,但我注意到硬盘中的文件比SD卡中的原件要小得多。有关为什么会发生这种情况的任何想法? 这是我使用的代码:

URL imageURL = new URL("http://192.168.0.1/DCIM/100__TSB/IMG_0001.JPG");
File dest = new File("/home/me/Pictures/FlashAir/IMG_0001.JPG");
BufferedImage image = ImageIO.read(imageURL);
ImageIO.write(image, "JPG", dest);

保存到本地硬盘的图像很好,但它们大约是原始尺寸的1/3。

1 个答案:

答案 0 :(得分:5)

该代码不只是复制(读取和保存)文件。它正在解码图像,然后以默认的JPEG压缩率对其进行重新编码(根据JPEGImageWriteParam文档判断,为0.75)。

如果您想更改压缩级别,请查看this question

如果您尝试完全复制文件,请不要使用ImageIO