EXIF son las siglas de Exchangeable Image File Format. Básicamente se trata de una especificación de facto que utilizan prácticamente la totalidad de cámaras digitales hoy día.
Lo que dicta esta especificación es cómo añadir datos extra en una imágen (JPEG y TIFF), de tal forma que cuando se hace una foto, la cámara digital guarda información sobre la cámara con la que está hecha la foto, las dimensiones de la imagen, resolución, tiempos de exposición, apertura, etc… y también nos dice si la imagen está rotada, y cuantos grados.
La rotación de la foto ocurre básicamente cuando pones la cámara en vertical para realizar la foto.
El problema, es que si tu coges esa imágen en vertical, y la subes al servidor, y la muestras en el navegador, la imagen aparece doblada, no está como debería estar. Si queremos que automaticamente esa imagen aparezca bien, habrá que usar la información EXIF para darle la vuelta.
Prácticamente cualquier programa de edición o visualización de fotos puede hacerlo (de hecho muchos lo haces y ni te enteras). Pero como esto es un blog de programación, lo interesante es ver cómo automatizar esto, para usarlo desde PHP o desde donde sea.
Básicamente hay dos programas que permiten hacer esto de forma fácil.
ImageMagick
Como no, aún no he encontrado nada que no se pueda hacer con ImageMagick. Con la opción -auto-orient ImageMagick le da automáticamente la vuelta a una imagen.
Usar ImageMagick tiene dos problemas:
- Para darle la vuelta con -auto-orient ImageMagick lee la imagen (JPEG) , realiza las transformaciones pertinentes, y la escribe a disco. Esto lo que significa es que como JPEG tiene compresión con pérdida, la calidad de la imagen resultante va a ser peor.
- El segundo problema es que en la versión 6.3.7 (hoy por hoy, la que hay por defecto en Ubuntu 8.10) hay un bug y NO FUNCIONA.
Ejemplo para auto orientar la imágen 1:
convert imagen1.jpg -auto-orient imagen-auto-orientada.jpg
Por lo visto a partir de la versión 6.4.x el bug ya está solucionado, no obstante, el primer problema de degradación de la imagen inamovible, lo cual nos lleva a:
JHead
JHead es un programa para manipular la información EXIF de las imágenes JPEG, transferir información de unas imágenes a otras, etc…
Lo que nos interesa es la opción -autorot, que básicamente permite rotar automáticamente las imágenes usando la información EXIF sin degradar la imagen original.
Ejemplo para rotar automáticamente todas las imágenes del directorio actual:
jhead -autorot *.jpg
English
14/01/2010 at 11:45 am Permalink
Gracias, jhead solucionó mi problema!!