Script para redimensionar Imagenes

En ocaciones es necesarios redimensionar un grupo de imagenes, la cuestión es cuando son muchas, y el cambio de proporción de medidas entre imagenes es mayor, demanda tiempo para generarlas, un ejemplo de esto seria subir las imagenes demo de una app en el apple store, donde hay que subir una imagen por cada tipo de medida de las pantallas en este caso seria para un app de un Iphone de tipo portrait

  • 3.5 - Inch Portrait 640x920
  • 4 - Inch Portrait 640x1096
  • 4.7 - Inch Portrait 750x1334
  • 5.5 - Inch Portrait 1242x2208

Con el siguiente script se puede redimensionar un grupo de imagenes de una carpeta definiendo el tamaño, tomando en consideración proporciones o tamaños fijos
ejemplo:

#!/bin/bash
convertImage() {  
  dir=$1
  if [[ -d "$dir" || -d ./"$dir" ]]
  then
      size=$2
      if [[ $dir =~ .*[^/]$ ]]
      then
          dir=$dir/
      fi
      for file in "$dir"*.{jpg,JPG,png,PNG}
      do
          if [ -f "$file" ]
          then
              echo "Convirtiendo $file ..."

      if [ -d $size ]
      then
          echo "existe"
      else
          mkdir "$size"
      fi

      convert  -resize $size "$file"  "./$size/$file"

          fi
      done
  else
      echo "Bad directory."
  fi

}



if [[ -z "$1" || -z "$2" ]]  
then  
    echo "a) Usage example: ./convertImagen.sh ./ 800x "
    echo "b) Usage example: ./convertImagen.sh ./ 800x\! "
    echo "c) Usage example: ./convertImagen.sh ./ 800x600 "
    echo "d) Usage example: ./convertImagen.sh ./ 800x600x\! "

    convertImage "./" 640x920x\!
    convertImage "./" 640x1096x\!
    convertImage "./" 750x1334x\!
    convertImage "./" 1242x2208x\!

else

convertImage $1 $2

fi

Para el optimo funcionamiento del script es necesario tener instalado imagemagick que activa el comando convert en la consola, la gran mayoria de distribuciones de Linux lo trea por defecto en el caso de Mac OS se puede instalar con el comando

brew install imagemagick  

Una ves instalado el programa y generado el script para que pueda ser ejecutado hay que ejecutar lo siguiente para darle permisos de ejecución al script

chmod +x convertImagen.sh  

Las imagenes a redimensionar deben estar en el mismo directorio donde esta el script, ejecutar el script de la siguiente forma :

./convertImagen.sh ./ 800x800x
  • 800x800x\! define el tamaño fijo para la imagen
  • 800x800x define el tamaño a proporción de la imagen

por defecto al ejecutar el comando

./convertImagen.sh 

crea las imagenes de los siguientes tamaños

  • 640x920x!
  • 640x1096x!
  • 750x1334x!
  • 1242x2208x!