Ler e escrever imagem sem alterar o tamanho do arquivo

Estou usando o seguinte método para ler e escrever uma imagem:

BufferedImage imagem = ImageIO.read(new File(diretorio)); File file = new File("D:\\teste.jpg"); ImageIO.write(imagem, "jpg", file);

Fiquei testando o tamanho da imagem que lia e que escrevia, eu lia uma imagem de 35kb, e quando escrevia a imagem exatamente igual ela tinha 455kb, não sei porque isso está acontecendo.

Notei que só acontece com PNG, só com JPG (só estou trabalhando com esses dois formatos).

Alguém tem alguma ideia? Obrigado.

Não tenho certeza, mas acredito que isso se dá na forma de compressão e descompressão da imagem.

Por exemplo, se vc abre uma mesma imagem em dois programas diferentes e depois salva, um pode salvar a imagem “maior” q o outro.
Acredito q seja por ai.