Linux Tux logo

Данная статья устарела, утилита протухла и вообще она совершенно бесполезна. Но это не беда, есть упаковщик атласа – 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 пикселей (исходные изображения без альфа-канала):

Sprite Tool
Набор входных изображений

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

Sprite Tool
Результат