以下代码从指定的网址下载图片。 当从浏览器本地保存相同的图像时,它比以编程方式下载的图像大得多,大约为66%。
虽然代码没有明确指定任何有关大小的参数,但为什么下载的文件小于从浏览器下载的文件?
BufferedImage buffImage = ImageIO.read(new URL("random url to an image"));
ImageIO.write(buffImage, "jpg", new File("MyAppDl.jpg"));
编辑:很奇怪......它不一致;在不同的URL上,缩略图明显更小
答案 0 :(得分:3)
只是猜测:浏览器“按原样”加载文件...您的代码将文件读入数据结构,然后再将其写入文件。最有可能的是它应用默认压缩,可能高于原始使用比率。
如果您希望原始文件不使用BufferedImage
和ImageIO
,请使用普通流读取/写入。
答案 1 :(得分:2)
ImageIO
版本正在解压缩并使用不同的质量设置重新压缩。不要这样做,使用不操纵数据的常规Stream
类,只需将其传递给未解释的。