¿Cómo rotar imágenes JPEG según los metadatos de orientación?

Tengo un código de servidor que genera miniaturas cuando se carga una imagen. El problema es que cuando se tomó la imagen y se rotó la cámara / dispositivo, se rotaron las miniaturas, a pesar de que las imágenes de tamaño completo se muestran en la orientación correcta en cualquier software de visualización de imágenes. Esto solo ocurre con jpgs.

Usando Vista previa en OSX, puedo ver que los jpgs tienen metadatos de orientación integrados. Cuando uso ImageTools (complemento de Grails) para generar una miniatura, los metadatos EXIF no están en la miniatura, por lo que las miniaturas aparecen giradas.

Via conversaciones fuera de línea, he aprendido que si bien es relativamente fácil leer metadatos EXIF, no hay una manera fácil de escribirlo, por lo que los datos se pierden al generar una miniatura jpg.

Así que parece que tengo dos opciones:

Utilice ImageMagick para generar las miniaturas. La desventaja es que requiere instalar más software en nuestros servidores.Lea los datos de orientación EXIF es el código y gire la miniatura adecuadamente.

¿Alguien sabe de alguna otra opción?

Respuestas a la pregunta(7)

Su respuesta a la pregunta