Thumbnails

An impressive feature of XBMC is its ability to display custom thumbnails (also known as an "icon") on most items displayed. You can assign thumbnails to folders, programs, music, videos, bookmarks, and of course pictures. You can choose to let XBMC automaticly download thumbnails for music-albums and video/movies from the internet or you can create your very own custom thumbnails, (or you can download custom thumbnails that others have created).

Custom Thumbnails
You can easily create your very own user-defined thumbnails on your computer with image tools like Adobe PhotoShop or Paint Shop Pro (or even Paint in Windows). You can alternativly downloaded thumbnails that others have created from the internet (from places like ChokeManiac.net, xbox-skins.net, MediaIcons.org, and many XBMC fan forums). Then you simply have to rename those thumbnails and transfer/copy them to the right location and XBMC will display them. Use JPG or PNG (with transparancy) image-format, and size of the picture to anything from 128x128 to 256x256 in pixel size, (the larger the image is the better it will look on a good display but at the same time large thumbnails loads slower). On a non-HDTV displays a image that is approx 100x140 is recomended for video/movies thumbnails (which is the size that is most common on IMDb), and approx 75x75 for music-albums (which is the default size on allmusic.com). For 720p/1080i HDTV displays a size of approx 182x256 for video/movies thumbnails, and approx 200x200 for music-albums (such music-albums can be found on allmusic.com).

Thumbnail Cache
XBMC will cache all Thumbnails to UserData\Thumbnails\ using the CRC of the path of the file or folder as a filename. That is the first location XBMC will generally look for a thumbnail for a given item. In order for your custom thumbnail to show, you may have to delete the cached thumbnail.

Thumbnailing Individual Items in a Single Directory
Name the icon file the same as the file you would like it to display for with a .tbn extension ie: Transformers.avi, Transformers.tbn. This is particularly useful for using custom thumbnails for movies.

Example: Movies\path\moviename.avi Movies\path\moviename.tbn

Program Thumbnails
In order to display the image displayed for a game, emulator or application, simply rename the desired image default.tbn and place it in the folder where the corresponding default.XBE is located.

Music Thumbnails
Music Thumbnails are assigned as part of a multitier process. First, the Tag Reader runs and caches any embedded art using the album name and album artist (or song artist, if that is all that is available). If the album name or artist is unavailable, it is cached using the path name of the song. This assumes, of course, that you have tag reading enabled. You can also use "Get Thumb" to download the album thumbnail from allmusic.com (AMG) for a specific album/folder or do a scan of all your music files in all shares. Thumbnails also get downloaded when you rip AudioCD's to your XBox with XBMC (which is described in the Ripping CDs section). Recomended is that you store each of your music-albums or artists in a separate subfolder to keep things organized. You can also of course make the folder have a custom thumbnail image. The code which assigns thumbnails to files runs and assigns thumbnails in the following order:


 * 1) Cached Album Thumbnail
 * This is all the embedded album art read by the tag reader and cached using the album name and album artist.


 * 2) Cached filename.tbn
 * This includes an embedded thumbnail cached with the fully qualified name.


 * 3) Remote filename.tbn
 * This is a filename.tbn on a remote share/folder which is then cached.


 * 4) Cached folder.jpg
 * This is a folder.jpg which is cached based off the folder path.


 * 5) Remote folder.jpg
 * This is a folder.jpg on a remote share/folder which is then cached.


 * 6) Remote foldername.tbn
 * This is a foldername.tbn on a remote share/folder which is then cached.

Examples:

In this example audiofilename.mp3 will use audiofilename.tbn as thumbnail: Music\path\audiofilename.mp3 Music\path\audiofilename.tbn

The same goes for playlists, cue-sheets, SHOUTcast, and internet-stream files, example: Music\path\audioplaylistname.m3u Music\path\audioplaylistname.tbn Music\path\cuelistname.cue Music\path\cuelistname.mp3 Music\path\cuelistname.tbn Music\path\shoutcastlinkname.pls Music\path\shoutcastlinkname.tbn Music\path\audiostreamname.strm Music\path\audiostreamname.tbn

Video Thumbnails
You can either use your own custom thumbnails or XBMC can retrieve video thumbnails from the internet via scrapers and cache them locally. XBMC applies thumbnails to video files in the following order:

Examples for User-Defined Video Thumbnails
The following example "videofilename.avi" will now use the thumbnail "videofilename.tbn". Videos\path\videofilename.tbn Videos\path\videofilename.avi
 * Single Video File

You can either use the filename of the first file in the stack or the name of the stack, so for: Movies\path\moviename-CD1.avi Movies\path\moviename-CD2.avi Either of the below would work: Movies\path\moviename-CD1.tbn Movies\path\moviename.tbn
 * Multi Part (Stacked) Video Files

If content has been set to Movies, movie.tbn will override any other thumbs for media in that folder. In he following example "videofilename.avi" will now use the thumbnail "movie.tbn". Videos\path\movie.tbn Videos\path\videofilename.avi
 * Movie

In the following example, the thumbnail will be used for the appropriate season in the Video Library season node. Where xx is 01, 02 etc. TV\showfolder\seasonxx.tbn
 * TV Show Season Thumbnails

For specials: TV\showfolder\season-specials.tbn

For the all seasons item: TV\showfolder\season-all.tbn

Playlist and internet-stream file examples: Playlists\path\videoplaylistname.pls Playlists\path\videoplaylistname.tbn Streams\path\videostreamname.strm Streams\path\videostreamname.tbn

Actor thumbnails
You can add actor thumbnails to any movie or TV show by adding an '.actors' folder in the corresponding movie / TV show / Epsiode directory. The folder can then contain actor images using the following naming convention:
 * actor_name.tbn (spaces replaced with underscores)

Picture Thumbnails
XBMC applies thumbnails to picture files in the following order:


 * 1) Cached Thumbnail
 * Thumbnails are cached to UserData\Thumbnails\Pictures using the CRC of the path of the file or folder.


 * 2) Images
 * EXIF thumbnail in JPEG images are then read. If no EXIF thumbnail is available, XBMC will load the image and generate a thumbnail from the image. These are then cached.


 * 3) Folders
 * \folder.jpg is checked first. If that file doesn't exist, XBMC will generate a thumbnail from up to 4 random images inside that folder.

Thumbnails for Sources
You can change the thumbnail displayed for a source by editing UserData\sources.xml. Note: Source thumbnails have to be in a folder on the local Xbox harddrive!

Simply modify your source as shown:

Custom Icons for Library Nodes
You can change the thumbnail displayed for a Library node by copying an icon to the media folder of the skin you wish to modify in this way. The filename for the corresponding nodes are as follows:

Music
"DefaultMusicArtists.png"

"DefaultMusicGenres.png"

"DefaultMusicTop100.png"

"DefaultMusicAlbums.png"

"DefaultMusicRecentlyAdded.png"

"DefaultMusicRecentlyPlayed.png"

"DefaultMusicSongs.png"

"DefaultMusicTop100Albums.png"

"DefaultMusicTop100Songs.png"

"DefaultMusicYears.png"

"DefaultMusicCompilations.png"

"DefaultMusicSearch.png"

"DefaultMusicPlaylists.png"

"DefaultMusicPlugins.png"

Videos
"DefaultMovies.png"

"DefaultMovieTitle.png"

"DefaultRecentlyAddedMovies.png"

"DefaultTvshows.png"

"DefaultTvshowTitle.png"

"DefaultRecentlyAddedEpisodes.png"

"DefaultMusicVideos.png"

"DefaultMusicVideoTitle.png"

"DefaultRecentlyAddedMusicVideos.png"

"DefaultActor.png"

"DefaultDirector.png"

"DefaultGenre.png"

"DefaultStudios.png"

"DefaultYear.png"

"DefaultVideoPlaylists.png"

"DefaultVideoPlugins.png"

In addition to these, there's also "DefaultProgramPlugins.png" and "DefaultPicturePlugins.png" that may be used.

Auto Switch to Icon Mode
XBMC tries to automatically switch to Large Icon view when the View Mode is set to Auto in the Settings. It first checks if the skin has Large Icon view, failing that switches to Icon view. If neither is available it goes for List View. The rules are as follows:

Programs
Auto switches to Icon view when 50% of all the items (files and folder) have thumbs.

Pictures
Auto switches to Thumbs view when the list contains more than 25% files. (In the case of Pictures, all items have thumbs as they are generated upon entering the folder.)

Videos
Auto switches to Thumb view when 50% of all the items (files and folder) have thumbs.

Music
Auto switches to Thumb view when the list contains at least 75% folders and at least 50% of them have thumbs. (Remember that playlist files like m3u, pls, etc, are treated as folders by default)

Hashing
The thumbnail .tbn file is created via a hashing function. As explained earlier, the hash is based off the CRC32 of the pathname (plus filename) in lowercase. Files which are local are hashed using their drive letter. Remote files are hashed using the  protocol designation and optional username and password.

Examples

 *   returns  
 *   returns  
 *   returns  
 *   returns  

Remember:
 * When hashing remote shares, use the path as displayed in the  file, which can include the username and password.
 * When hashing directories for thumbnails, include the final slash.

Sample Code
The following code is written in C# and produces the same output as the XBMC hashing function. public string Hash(string input) {   char[] chars = input.ToCharArray; for (int index = 0; index < chars.Length; index++) {       if (chars[index] <= 127) {          chars[index] = System.Char.ToLowerInvariant(chars[index]); }   }    input = new string(chars); uint m_crc = 0xffffffff; byte[] bytes = System.Text.Encoding.UTF8.GetBytes(input); foreach (byte myByte in bytes) {       m_crc ^= ((uint)(myByte) << 24); for (int i = 0; i < 8; i++) {           if ((System.Convert.ToUInt32(m_crc) & 0x80000000) == 0x80000000) {               m_crc = (m_crc << 1) ^ 0x04C11DB7; }           else {               m_crc <<= 1; }       }    }    return String.Format("{0:x8}", m_crc); }