【问题标题】:Why does reading and writing a JPEG with Java ImageIO reduce the file size?为什么使用 Java ImageIO 读写 JPEG 会减小文件大小?
【发布时间】:2016-05-16 03:17:15
【问题描述】:

我正在使用 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。

【问题讨论】:

    标签: java flashair


    【解决方案1】:

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

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

    如果您要准确复制文件,请不要使用 ImageIO

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      相关资源
      最近更新 更多