Un error que cometen ciertos usuarios cuando necesitan una imagen con una extensión determinada es que renombran el archivo cambiando la extensión.

Eso está mal y algunos programas como eog (eye of gnome) te muestran un error. También se puede dar uno cuenta si por ejemplo renombra un archivo png que tenga transparencias a jpg, al abrirlo las transparencias permanecen mientras que el formato jpg no admite las transparencias.

En linux tenemos como es costumbre varias alternativas para convertir archivos en lote de una extensión a otra. Una opción es utilizar programas como xnViewMP que nos permiten realizar ciertas acciones en lote, sin embargo ImageMagick viene instalado por defecto en las distribuciones más conocidas y podemos usar la herramienta convert que se incluye en el paquete.

Si queremos pasar una imagen tga a png basta con escribir en un terminal.

[usuario@equipo ~]$ convert imagen.tga imagen.png

Si queremos convetir varias imágenes tenemos utilizar un bucle for que convierta las imágenes una por una.

[usuario@equipo ~]$ for A in `ls *.tga` ; do convert ${A} ${A}.png ; done

Para evitar escribir una linea tan larga escribí el script que podéis ver más abajo. En él lo único que hago es poner como primer argumento la extensión de las imágenes que quiero convertir seguido de la nueva extensión.

#!/bin/bash

if [[ -z $@ ]] ; then
  echo -e "Convierte todas las imágenes de la carpeta.
  Uso:
    sh $0 extension-original extension-nueva

  Ejemplo:
    sh $0 tga png"
  exit 1
fi

ORIGINAL=$1  #extension original
FORMATO=$2   #nueva extension

mkdir ${FORMATO}

for A in `ls *.${ORIGINAL}` ; do
  convert ${A} ${A}.${FORMATO}
done

for A in `ls *.${ORIGINAL}.${FORMATO}` ; do
  NAME=`echo ${A} |cut -d '.' -f1`
  mv ${A} ${FORMATO}/${NAME}.${FORMATO}
done

Para ejecutar el script lo único que hay que hacer es guardarlo con el nombre que quieras (yo lo guarde como imgcon), darle permisos de ejecución y luego ejecutarlo en la carpeta dónde se encuentran las imágenes a convertir. Ejemplo:

[usuario@equipo ~]$ chmod +x imgcon
[usuario@equipo ~]$ mv imgcon Imágenes/unicornios
[usuario@equipo ~]$ cd Imágenes/unicornios
[usuario@equipo unicornios]$ sh imgcon bmp jpg