
Данная статья устарела, утилита протухла и вообще она совершенно бесполезна. Но это не беда, есть упаковщик атласа – Texture Packer, которым я пользуюсь давно и на постоянной основе.
Время идет, утилиты обновляются.
Написал утилиту для “склеивания” отдельных спрайтов в один большой имидж/текстуру. Такая утилита для Windows у меня была уже очень давно, но поддерживала только один формат изображения – TARGA, а это не всегда удобно. Да и писал я ее с расчетом на GUI, а не консоль.
Одним словом, решил написать улучшенную версию, но для Linux console. В качестве библиотеки для работы с изображениями была выбрана ImLib2. Проблемы возникли сразу же – битые ссылки на документацию. Ладно, почитаем хедеры 😉
Библиотека оказалась достаточно простой и удобной в использовании. В итоге родилась утилита Sprite Tool. Утилита работает с изображениями в формате JPEG, PNG, BMP, TARGA, GIF. Если в изображении есть альфа-канал, то в результирующем имидже он будет присутствовать тоже.
Использовать утилиту просто:
spritetool < -d=DIR | -f=FILE> [-o=OUT_NAME] [-c=X] [-p] -d=DIR - взять все спрайты из директории DIR; -f=FILE - взять список спрайтов из текстового файла FILE; -o=OUT_NAME - имя результирующего имиджа/текстуры (по расширению определяется формат имиджа), по умолчанию 'out.png'; -c=X - число столбцов, по умолчанию 1; -p - делать коррекцию размеров раную степени двойки (если в результате нужна текстура), по умолчанию коррекция не делается.
Пример – есть 5 спрайтов размером 100х100 пикселей (исходные изображения без альфа-канала):

После выполнения команды spritetool -d=. -c=4 -p -o=spritetool_2.png получим текстуру, у которой размеры кратны степени двойки – 512×256:

Отвечаю сам себе – все то же самое можно было сделать при помощи утилиты montage из ImageMagic:
montage -geometry +0+0 -tile 1 -background “rgba(0,0,0,0.0)” /path/*.png out.png
Можно сказать, что зря потерял время. Зато изучил возможности библиотеки Imlib2 😉