jueves, 1 de noviembre de 2012

Optimizando multiples imagenes PNG recursivamente

Utilizando la herramienta pngcrush disponible con apt-get y creando un pequeño shell script podemos optimizar todas las imagenes .png que queramos dentro de un árbol de directorios recursivamente.

El script requiere como parámetro el path a partir del cual se buscarán los ficheros y por seguridad no permite especificar el path raíz de nuestro linux.
Ojo que sobreescribe los ficheros, así que tener cuidado y haceros copia de seguridad por si acaso :)

Aquí os dejo el script para optimizar recursivamente todas vuestras imagenes png.



#!/bin/sh

if [ $# -lt 1 ]
then
        echo "Missing path parameter to search into"
        exit 2
fi

if [ "$1" = "/" ]
then
        echo "root folder is not allowed"
        exit 2
fi

read -p "Crush all PNG files under $1 folder? yes / no ?" answer
if [ "$answer" != "yes" ]
then
        echo "Cancelled"
        exit 2
fi

echo "Looping inside $1"
for png in `find $1 -name "*.png"`
do
        echo "crushing $png"
        pngcrush "$png" temp.png
        mv -f temp.png $png
done;


Nota:  la linea pngcrush podeis personalizarla a vuestro gusto, por ejemplo añadiendo -brute para que la compresion sea superior (aunque mucho más lento).

He conseguido aproximadamente un 10% de reducción sin usar brute básicamente porque no me apetece esperar varias horas (eran cientos de ficheros)

Espero que os sirva :)


No hay comentarios: