Como remover metadados de imagens de imagens grandes sem falta de memória em Java

Preciso remover os metadados das imagens, mas quando as imagens são muito grandes, obtenho OOM. No momento, estou usando o ImageIO para isso.

BufferedImage image = ImageIO.read(new File("image.jpg"));
ImageIO.write(image, "jpg", new File("image.jpg"));

O problema é queImageIO.read (...) lerá o arquivo inteiro na memória, o que causa OutOfMemory quando eu estiver processando imagens muito grandes.

Eu poderia tentar usar o CommonsImaging (https://commons.apache.org/proper/commons-imaging/sampleusage.html), mas parece que ele suporta apenas JPEG (classe ExifRewriter).

Alterar a configuração de memória da VM não é uma opção e preciso oferecer suporte mais do que apenas arquivos JPEG.

Alguma idéia de como fazer isso sem incorrer em Memória insuficiente?

questionAnswers(1)

yourAnswerToTheQuestion