SVG para PNG em vários tamanhos e cores

Eu precisava usar um conjunto de ícones ( Entypo ) que era fornecido apenas como arquivos SVG e precisava ter vários tamanhos e cores disponíveis. Então eu escrevi um script para convertê-los, com apelidos de nomes de cores!

Algumas notas sobre a implementação, para explicar o fluxo um pouco estranho:
1. as cores têm aliases (por exemplo, # 33b5e3 é “holo”)
2. tudo é verificado quanto à existência primeiro, então adicionar uma cor irá gerar apenas os arquivos necessários (mais rápido !)
3. ele gera uma versão grande (1024×1024) da imagem, porque a colorização remove o antialiasing. Isso é reduzido para suavização de superamostragem.

Para usá-lo, personalize os tamanhos, cores e aliases na parte superior do script, adicione o sinalizador + x e execute-o na pasta que contém os arquivos SVG:

#!/bin/bash
sizes
="16 24 32 64 128 256"
colors
=("#000" "#33b5e3" "#808080")
names
=("black" "holo" "grey")



count
=${#names[@]}
for i in `seq 1 $count` ; do
name
=${names[i - 1]}
if [ ! -d pngs/$name ] ; then
mkdir pngs
/$name
fi
for size in $sizes ; do
if [ ! -d pngs/$name/$size ] ; then
mkdir pngs
/$name/$size
fi
done
done

for svg in `ls *svg` ; do
png
=`echo $svg | sed s/.svg/.png/`

for i in `seq 1 $count` ; do
color
=${colors[i - 1]}
name
=${names[i - 1]}

big
=pngs/$name/$png

# export a massive one in this color...
if [ ! -f $big ] ; then
convert
-depth 16 -background transparent -fill $color -colorize 100% -resize 1024x1024 $svg $big
fi


for size in $sizes ; do
this=pngs/$name/$size/$png
if [ ! -f $this ] ; then
convert $big
-resize $size"x"$size $this
fi
done

done

echo
"Converted $svg > $png"

done