Об изготовлении анимированных спрайтов

Об изготовлении анимированных спрайтов

Заметка для тех кто программирует игрушки и не имеет доступа к телу дизайнера.

Исходная задача такая:
У меня есть набор картинок в png формате каждая из которых это один кадр из жизни персонажа. Если их быстро быстро просмотреть одну за другой, то персонаж как бы делает два шага.
Что должно получиться в итоге:
Один файл (png) в котором эти кадры выстроены слева на право.

Берём Imagick (convert) и приступаем к магии командной строки.

Сначала сделаем временный каталог и скопируем туда наши файлики с 053.png до 078.png

Затем обрежем края и сохраним получившиеся размеры в файлы width.info и height.info
rm -f *.info && for f in `ls 0*|sort`; 
do 
   convert $f -trim +repage trim$f 
   identify -ping -format '%w' trim$f >>width.info 
   identify -ping -format '%h' trim$f >>height.info 
done 
На выходе мы получим файлы с trim053.png по trim078.png разных размеров.

Далее приведём их всех к одному размеру, центрируя по горизонтали и выравнивая по нижней границе (параметр -gravity South).
width=`cat width.info |sort -n|tail -1`
height=`cat height.info |sort -n|tail -1`
for f in `ls trim*|sort`;
do 
   convert $f -gravity South -background transparent -extent ${width}x${height} size$f; 
done 
На выходе будет набор файлов с sizetrim053.png по sizetrim078.png одинаковых по ширине и по высоте.

Осталось сцепить их в "ленту"
convert `ls size*|sort` +append walking.png
Готово!

Яндекс.Метрика