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
Pingback: Redirigir la salida y el mensaje de error de un comando a /dev/null – Linux en Español