miércoles, 30 de mayo de 2012

Convertir el color de una imagen a transparente con bash...

Hace tiempo atrás me había enfrentado a la tarea de quitar un color de una imagen en BMP y sustituirla por transparencia.

Nota: Por razones de derechos de autor no puedo poner las imágenes, pero puedo poner el link donde están:

http://www.reinerstilesets.de/

Para recrear lo que quiero hacer es algo como esto:
Cambiar el cafe y ponerlo trasparente
 

Esas imágenes son geniales para programar juegos con SDL. Ya que necesitamos un color key que podamos "sacrificar". Pero si lo queremos usar en algún lenguaje que soporte transparencia como Java.

R// Muy fácil dirán unos, abrís GIMP y seleccionas con Magic Choose el color deseado lo cortas y lo salvas.

Es verdad, pero hacerlo para 1000 imágenes...
VERDAD? que no es tan fácil.

La solución a nuestros problemas es simplemente un script en bash que hagarra todas las imágenes las convierta y borre las originales.

El comando que necesitamos es este:

convert -transparent 'RGB()' imagenOrigen.bmp imagenDestino.png

El script quedaria

#!/bin/bash
FILES=`find $1 | grep bmp`
for f in $FILES
do
    nf=`echo ${f//bmp/png}` #replace all
    echo $nf
    convert -transparent 'RGB(97,68,43)' $f $nf
    rm $f
done

Y para usarlo basta llamar el script y darle el folder con todas las imagenes

AEM hablemos del arquetipo 11

Cuando creamos un proyecto con AEM. Siempre es importante saber que arquetipo estamos usando. Pues esto me determinara que source, herramien...