Cómo saber el formato de una imagen independientemente de su extensión

No siempre la extensión de un fichero indica el formato de ese fichero. Y nunca está de más comprobar que el fichero con el que vamos a trabajar es del tipo que esperamos que sea. Especialmente en scripts en los que procesamos de forma automatizada muchos ficheros.

Con el comando file podemos acceder a las características de un fichero, pero cuando se trata de un fichero de imagen, no podemos acceder directamente al formato, ni siquiera con file -i, sino que deberíamos usar cut u otro comando para poder extraer exactamente ese dato.

Por lo que nos resulta más cómodo usar identify con el modificador -format %m:

identify -format %m imagen.jpg

Devolverá el formato en mayúsculas en caso de que sea una imagen y un mensaje como este en caso de que no sea una imagen:

identify-im6.q16: no decode delegate for this image format `SH' @ error/constitute.c/ReadImage/560.

Por lo que si queremos únicamente trabajar con los ficheros de un determinado directorio, podemos hacer la comprobación de si es un fichero válido de imagen o no, con identify -format %m $filename &> /dev/null que, aplicado a un script, podría ser algo así:

#!/bin/bash

for filename in $(ls)
do
    identify -format %m $filename &> /dev/null
    if [ $? -eq 0 ]
    then
        echo "El fichero $filename tiene formato $(identify -format %m $filename)"
    fi
done

Un comentario en «Cómo saber el formato de una imagen independientemente de su extensión»

Deja una respuesta

Tu dirección de correo electrónico no será publicada.