Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/03/2009, 18:47
Avatar de arthpix
arthpix
 
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 20 años, 6 meses
Puntos: 93
Mi primer shellscript

Estoy trabajando en un catálogo de productos con cientos de imágenes de alta resolución y diferentes tamaños, separadas en decenas de directorios.
Podría haber utilizado la extensión GD2 de PHP, pero no quería subir los archivos a ftp.
Pensé en utilizar la poderosa acción "batch process" de GIMP, pero no me permite añadir recursivamente desde un directorio todos los archivos contenidos en subdirectorios, por otro lado Photoshop y su procesamiento por lotes no me permite ser selectivo en el "aspect ratio".
Así que decidí crear un shellscript que utilizando el comando convert de Imagemagick realizara la tarea. Me puse manos a la obra y este fue el resultado:

Código:
#!/bin/bash
# Script creado por Arturo Peraza ([email protected])
# Este script esta licenciado bajo licencia GPL

# Avisos al usuario
echo "Este script generará un subdirectorio de respaldo llamado tmp"
echo "Los archivos originales serán copiados en el y si todo sale bien seran eliminados"
echo "Si desea conservar los archivos originales copielos en otra ubicación antes de continuar"

# Pausa para que el usuario lea los avisos
read -p "'Presione Intro para continuar'"

# Mirar si existe el directorio tmp y si no crearlo
if ls | grep tmp
then
   echo "Creando respaldos..."
else
   mkdir tmp
   echo "Creando respaldos..."
fi

# Copiar todos los archivos al directorio tmp y redimensionar los originales
for i in `ls *.jpg` ; do
cp $i tmp/$i
convert $i -resize 350x350 $i
done
clear

# Pausa para que el usuario revise que todo salio bien
read -p “'Revise los archivos resultantes y presione Intro para continuar'”
clear
echo "Los siguientes archivos fueron redimensionados con exito:"

# Mirar si los respaldos fueron creados y en su caso eliminarlos
if ls tmp | grep jpg
then
   rm -rf tmp
   exit
else
   echo "No hay respaldos, Probablemente ocurio algun error"
   echo "Revise los archivos y permisos e intentelo de nuevo"
fi
Lo posteo aquí para quien pueda resultarle útil y por supuesto, aprovechando la generosidad de los foreros más avanzados si tienen alguna sugerencia para mejorar su funcionalidad o cualquier cosa que sea más facil o que se haga de manera más correcta también la compartan con nosotros.


Cualquier crítica será bienvenida, solamente sean benévolos si cometí muchos errores de principiante


Saludos
__________________
Antes de hacer rabietas infórmate: Linux != Windows