Cómo eliminar metadatos de imagen de imágenes grandes sin memoria en Java

Necesito eliminar metadatos de las imágenes, pero cuando las imágenes son demasiado grandes obtengo OOM. En este momento estoy usando ImageIO para eso.

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

El problema es queImageIO.read (...) leerá todo el archivo en la memoria, lo que causa OutOfMemory cuando estoy procesando imágenes que son demasiado grandes.

Podría intentar usar CommonsImaging (https://commons.apache.org/proper/commons-imaging/sampleusage.html) pero parece que solo admite JPEG (clase ExifRewriter).

Cambiar la configuración de memoria para la VM no es una opción y necesito admitir más que solo archivos JPEG.

¿Alguna idea de cómo hacerlo sin incurrir en Memoria insuficiente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta