From Official Kodi Wiki
Jump to navigation Jump to search
Home icon grey.png   ▶ Development ▶ Add-on development ▶ Skinning ▶ TexturePacker

Kodi uses a tool named TexturePacker to compile all images used in a skin into a single file. The benefit of it is that images inside the Textures.xbt will load faster in the skin. This is done by converting all images into a format that take less processing by Kodi when they need to be rendered onto the screen.

A common misconception is that TexturPacker will just compress the images into a single file. This if far from the truth, so don't be surprised if the Textures.xbt file is much larger than the total size of all the individual images.

1 How To Get It

If you are using Windows, you can simply download a zipfile with an up-to-date version of TexturePacker from the Kodi mirrors.
It is available here: Download TexturePacker 1.0.4 Note: This is a dll free self contained texturepacker executable for windows.

On other platforms, you will have to compile TexturePacker. TexturePacker is built and stored in ../tools/depends/native/TexturePacker/bin during Kodi's configure process. Bootstrap and configure can be lengthy. If you only need TexturePacker, you can save some effort: install the Kodi source and build dependencies in preparation for a build (Compiling from source) and build TexturePacker directly:

cd xbmc/tools/depends/native/TexturePacker

Note: TexturePacker depends on libgif which is currently not a Kodi dependency. Ensure the library and its development headers (Debian: libgif-dev package) is installed before compiling.

2 Usage

Since TexturePacker is a command-line tool, you will need to open a dos box/terminal/console in order to run it. Navigate to the kodi addons folder and use:

TexturePacker -dupecheck -input skin.name\media -output skin.name\media\Textures.xbt

The optional -dupecheck option is useful if you have included the same image multiple times in your media folder. For example, if your skin includes a lot of studio logos, most likely a lot of them are included multiple times but with a slightly different filename. The '-dupecheck' option will make sure each unique image is included only once in the Textures.xbt file, thus keeping the size of it as small as possible.

If your skin includes Skin_development_introduction#Skin_Themes you should also run TexturePacker on your theme folders:

TexturePacker -input skin.name\themes\Blue -output skin.name\media\Blue.xbt

Note: When using an XBT file in your skin, your file paths will not be case sensitive, even if your skin resides on a case sensitive file system!

2.1 Texturepacker build bat

Create a Texturepacker.bat with the contents below, inside the skin.name directory along with all the texturepacker.exe, a double click on the bat file does all the work for you.



ECHO -------------------------------------------------------------------------
ECHO ^> ** Creating excludes... **

ECHO .svn>exclude.txt
ECHO .git>>exclude.txt
ECHO Thumbs.db>>exclude.txt
ECHO Desktop.ini>>exclude.txt
ECHO dsstdfx.bin>>exclude.txt
ECHO build.bat>>exclude.txt
ECHO \skin.confluence\media\>>exclude.txt
ECHO \skin.confluence\backgrounds\>>exclude.txt
ECHO exclude.txt>>exclude.txt

ECHO -------------------------------------------------------------------------

ECHO -------------------------------------------------------------------------
ECHO                   ** Creating Textures XBT File... **
ECHO -------------------------------------------------------------------------

PING -n 2 -w 1000 > NUL
START /B /WAIT TexturePacker -dupecheck -input media\ -output media\Texture.xbt
PING -n 2 -w 20000 > NUL
ECHO -------------------------------------------------------------------------
ECHO ^> Deleting excludes...
DEL exclude.txt
ECHO ^> Done
ECHO -------------------------------------------------------------------------

ECHO -------------------------------------------------------------------------
ECHO        ** XBT build complete - scroll up to check for errors. **
ECHO -------------------------------------------------------------------------

PING -n 50 -w 5000 > NUL