25.6.07

Resize de imágenes V 1.0, 2.0 y 3.0

Ante la necesidad de tener que reajustar el tamaño de las fotos para poder hacer paquetes de fotos de un tamaño razonable, para su descarga; he indagado un poco y he descubierto el paquete ImageMagick. Con un poco de ayuda del absurdo he hecho este sencillo script:
VERSION 1.0

#!/bin/bash
# Resize de imagenes a 800x600 para hacer paquetes de fotos
# Hace uso del paquete ImageMagick "http://www.imagemagick.org/script/index.php"
contador=0
if [ $1 = "-ayuda" ]
then
   echo ""
   echo "COMO USAR: "
   echo "ajustar [opcion] archivos_de_imagen"
   echo ""
   echo "OPCIONES"
   echo "-n    Borra la carpeta de destino antes de escribir en ella."
   echo ""
   echo "ejemplo: ajustar -n *.jpg"
   echo "Ajustará todas las imágenes de la carpeta actual borrando el contenido de la carpeta destino antes."
else
   if [ $1 = "-n" ]
   then
      rm /ruta/carpeta/imagenes/reajustadas/*.jpg
   fi
   for parametro in $*
   do
      if [ $parametro = "-n" ]
      then
         echo Borrando carpeta de destino ...
      else
         echo Convirtiendo: $parametro
         convert $parametro -sample 800 "/ruta/carpeta/imagenes/reajustadas/$parametro"
         let contador=contador+1
      fi
   done
   echo Convertidas con exito $contador fotos.
fi # FI DE LA AYUDA

Update: 26-06-2007 18:00 || VERSION 2.0
He optimizado parte del código y ahora se puede elegir un ancho; de momento el alto es proporcional al ancho y no creo que vaya a cambiar esto, pues necesito fotos proporcionadas.
#!/bin/bash
# Resize de imagenes a ****x****
# Hace uso del paquete ImageMagick "http://www.imagemagick.org/script/index.php"
contador=0   #Contador de imagenes reajustadas
Nancho=0   #Nuevo Ancho
ancho=800   #Ancho por defecto
if [ $1 = "-ayuda" ]
then
   echo ""
   echo "COMO USAR: "
   echo "ajustar [opcion/es] archivo/s_de_imagen"
   echo ""
   echo "OPCIONES"
   echo "-n    Borra la carpeta de destino antes de escribir en ella."
   echo ""
   echo "-t    Cambia el ancho por defecto (800) por uno dado"
   echo ""
   echo "ejemplo:"
   echo "         ajustar -n -t 600 foto1.jpg foto2.jpg"
   echo ""
   echo "Ajustará los ficheros 'foto1.jpg' y 'foto2.jpg' a un ancho de 600 (y una altura proporcional) borrando primero el contenido de la carpeta destino"
else
   for parametro in $*
   do
      if [ $parametro = "-n" ]
      then
         rm /ruta/carpeta/imagenes/reajustadas/*.jpg
         echo Borrando carpeta de destino ...
      else
         if [ $Nancho = 1 ]
         then
            ancho=$parametro
            Nancho=0
         else
            if [ $parametro = "-t" ]
            then
               Nancho=1
            else
               echo Convirtiendo: $parametro
               convert $parametro -sample $ancho "/ruta/carpeta/imagenes/reajustadas/$parametro"
               let contador=contador+1
          fi
        fi
      fi
   done
   echo ""
   echo "     Convertidas con exito $contador fotos con un ancho de $ancho pixeles"
   echo "Para obetener mas informacion escriba:  ajustar -ayuda"
fi # FI DE LA AYUDA

Update: 01-07-2007 18:00 || VERSION 3.0
He añadido dos suculentas opciones nuevas:
  • Creación de un archivo .zip conteniendo las imagenes reajuatadas
  • Elección de carpeta destino distinta a la dada por defecto

  • #!/bin/bash
    # Resize de imagenes a ****x****
    # Hace uso del paquete ImageMagick "http://www.imagemagick.org/script/index.php"
    # Para darle un uso útil a este script, hay que copiarlo a la carpeta "/usr/bin/"

    contador=0   #Contador de imagenes reajustadas
    Nancho=0   #Nuevo Ancho BOLEANA
    Nconvertidas=0   #Hubo conversión¿?
    Nzip=0   #Zip?
    Ccarpeta=0   #Cambio de carpeta?¿
    Cresize="/media/hda6/foto/resize/"   #Carpeta destino
    ancho=800   #Ancho por defecto
    if [ $1 = "-ayuda" ]
    then
       echo
       echo "COMO USAR: "
       echo
       echo "ajustar [opciones] archivos_de_imagen"
       echo
       echo "OPCIONES"
       echo "-c        Cambia la carpeta destino. -c /ruta/carpeta/valida"
       echo
       echo "-n        Borra la carpeta de destino antes de escribir en ella."
       echo 
       echo "-t xxxxx  Cambia el ancho por defecto (800) por uno dado (xxxxx)."
       echo
       echo "-z x.zip  Crea un archivo ZIP (x.zip) que contendrá las fotos de la carpeta destino."
       echo
       echo "ejemplo:"
       echo "         ajustar -n -t 600 -z dos_fotos.zip foto1.jpg foto2.jpg"
       echo
       echo "   Ajustará los ficheros 'foto1.jpg' y 'foto2.jpg' a un ancho de 600 (y una altura proporcional) borrando primero el contenido 
    de la carpeta destino.Una vez hecho esto se creará el archivador dos_fotos.zip con las imágenes contenidas en la carpeta destino."
    else
       for parametro in $*
       do
          if [ $Nzip = 1 ]
          then
             nombrezip=$parametro
             Nzip=2
          else
             if [ $Ccarpeta = 1 ]
             then
                Cresize=$parametro
                Ccarpeta=0
             else
                if [ $parametro = "-c" ]
                then
                   Ccarpeta=1
                else
                   if [ $parametro = "-z" ]
                   then
                      Nzip=1
                   else
                   if [ $parametro = "-n" ]
                   then
                      rm /media/hda6/foto/resize/*.jpg
                      echo Borrando carpeta de destino ...
                   else
                      if [ $Nancho = 1 ]
                      then
                         ancho=$parametro
                         Nancho=0
                      else
                         if [ $parametro = "-t" ]
                         then
                            Nancho=1
                         else
                            echo Convirtiendo: $parametro
                            convert $parametro -sample $ancho "$Cresize$parametro"
                            let contador=contador+1
                            Nconvertidas=1
                      fi
                    fi
                  fi
                fi
              fi
            fi
          fi
       done
       if [ $Nconvertidas = 1 ]
       then
          echo
          echo "     Convertidas con exito $contador fotos con un ancho de $ancho pixeles."
          echo "     Guardadas en: $Cresize"
       fi
       if [ $Nzip = 2 ]
       then
          zip "$Cresize$nombrezip" $Cresize*.jpg
          echo "     Creado con éxito el archivador $nombrezip."
       fi
       echo
       echo "Para obetener mas informacion escriba:  ajustar -ayuda"
    fi # FI DE LA AYUDA