Почему файл, загружаемый с помощью ImageIO, меньше файла, загруженного из браузера? - PullRequest
2 голосов
/ 15 апреля 2011

Код ниже загружает изображение с указанного URL. Когда одно и то же изображение сохраняется локально из браузера, оно значительно больше, чем загружаемое программно, примерно в 66%.

Хотя в коде явно не указаны какие-либо параметры, касающиеся размера, почему загруженный файл меньше, чем загруженный из браузера?

BufferedImage buffImage = ImageIO.read(new URL("random url to an image"));
ImageIO.write(buffImage, "jpg", new File("MyAppDl.jpg"));

РЕДАКТИРОВАТЬ: странно ... это не соответствует; на другом URL миниатюра заметно меньше

Ответы [ 2 ]

3 голосов
/ 15 апреля 2011

Просто предположение: браузер загружает файл "как есть" ... ваш код считывает файл в структуру данных и затем снова записывает его в файл. Скорее всего, он применяет сжатие по умолчанию, которое может быть выше исходного коэффициента использования.

Если вы хотите, чтобы исходный файл не использовал BufferedImage и ImageIO, но читал / записывал его с простыми потоками.

2 голосов
/ 15 апреля 2011

Версия ImageIO распаковывается и повторно сжимается с другими настройками качества.Не делайте этого, используйте обычные Stream классы, которые не манипулируют данными и просто пропускают их через неинтерпретированный.

...