jueves, 23 de julio de 2015

Bash: Modificar y convertir bloques de imágenes a distintos tamaños

El problema que se planteó fue el siguiente:
Varios archivos dibujados en formatos .SVG, tenían que ser convertidos a formato .PNG.
Luego, estas imágenes debían ser convertidas a distintos tamaños y copiadas a distintos directorios.
Específicamente se aplicó a un proyecto Android, en el cual cada imagen se guardaba en distintos tamaños, en diferentes directorios según su resolución.
Hacerlo en forma manual, representaba la inversión de una gran cantidad de tiempo, con el script se acortaron tiempos.
A continuación el script.

-----------------------------------cortar aqui y colocar en un archivo-----
----------------------------------no incluir estas lineas

#!/bin/sh
#-------------------------------------------------------------------
# Toma como entrada los archivos dibujados en formato .SVG almacenados en un directorio
# y los convierte e formato .PNG
# Crea imagenes y directorios de diferentes tamanos
# Los archivos deben estar numerados con numeros de dos digitos al final
#
# ejemplo: archivo01.svg, archivo02.svg, archivo03.svg
# salida: archivo01.png, archivo02.png, archivo03.png
#-------------------------------------------------------------------

# PARAMETROS
# ---------------
#primer argumento el directorio
#segundo argumento los archivos en bloque .svg que luego seran convertidos

#ingresa al directorio posicionandose
cd $1

ARCHIVOPREFIJO=$2;
##obtiene el directorio
DIRECTORIO=`/usr/bin/pwd`;
MDPI="/";
echo $HOME;
echo $DIRECTORIO;

EXTENSION="png";

PNG="/png";
MDPI="/drawable-mdpi";
HDPI="/drawable-hdpi";
XHDPI="/drawable-xhdpi";
XXHDPI="/drawable-xxhdpi";
XXXHDPI="/drawable-xxxhdpi";
LDPI="/drawable-ldpi";

# convertir a png
############################3
rm -rf $DIRECTORIO$PNG;
mkdir $DIRECTORIO$PNG;
echo "-------------------------------------------------\n";
echo "Convirtiendo a PNG \n";
echo "-------------------------------------------------\n";
convert $ARCHIVOPREFIJO*.svg $DIRECTORIO$PNG"/"$ARCHIVOPREFIJO%02d.png

echo "-------------------------------------------------\n";
echo "Borrando directorios \n";
echo "-------------------------------------------------\n";
#limpiar directorios

rm -rf $DIRECTORIO$MDPI;
rm -rf $DIRECTORIO$HDPI;
rm -rf $DIRECTORIO$XHDPI;
rm -rf $DIRECTORIO$XXHDPI;
rm -rf $DIRECTORIO$XXXHDPI;
rm -rf $DIRECTORIO$LDPI;


echo "-------------------------------------------------\n";
echo "Creando directorios \n";
echo "-------------------------------------------------\n";
#crear directorios

mkdir $DIRECTORIO$MDPI;
mkdir $DIRECTORIO$HDPI;
mkdir $DIRECTORIO$XHDPI;
mkdir $DIRECTORIO$XXHDPI;
mkdir $DIRECTORIO$XXXHDPI;
mkdir $DIRECTORIO$LDPI;

#copiado de los archivos a cada directorio
#############################################
echo "-------------------------------------------------\n";
echo "Copiando archivos PNG \n";
echo "-------------------------------------------------\n";
cp $DIRECTORIO$PNG"/"*.$EXTENSION $DIRECTORIO$MDPI;
cp $DIRECTORIO$PNG"/"*.$EXTENSION $DIRECTORIO$HDPI;
cp $DIRECTORIO$PNG"/"*.$EXTENSION $DIRECTORIO$XHDPI;
cp $DIRECTORIO$PNG"/"*.$EXTENSION $DIRECTORIO$XXHDPI;
cp $DIRECTORIO$PNG"/"*.$EXTENSION $DIRECTORIO$XXXHDPI;
cp $DIRECTORIO$PNG"/"*.$EXTENSION $DIRECTORIO$LDPI;

#CONVERSION
##############################################
echo "-------------------------------------------------\n";
echo "Configurando resoluciones \n";
echo "-------------------------------------------------\n";

#echo $DIRECTORIO$MDPI"/"*.$EXTENSION;
mogrify -resize 300x300 $DIRECTORIO$MDPI"/"*.$EXTENSION
mogrify -resize 400x400 $DIRECTORIO$HDPI"/"*.$EXTENSION
mogrify -resize 700x700 $DIRECTORIO$XHDPI"/"*.$EXTENSION
mogrify -resize 1000x1000 $DIRECTORIO$XXHDPI"/"*.$EXTENSION
mogrify -resize 1280x1280 $DIRECTORIO$XXXHDPI"/"*.$EXTENSION
mogrify -resize 200x200 $DIRECTORIO$LDPI"/"*.$EXTENSION

echo "-------------------------------------------------\n";
echo "Finalizado \n";
echo "-------------------------------------------------\n";



-----------------------------------cortar hasta aqui y colocar en un archivo-----
----------------------------------no incluir estas lineas

No hay comentarios:

Publicar un comentario