Artwork: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
>SiliconKid
(→‎Thumbnail Cache: - Add note about the <thumbsize> tag in advancedsettings and how it can be used to control image resizing)
>SiliconKid
Line 48: Line 48:
* Some documentation suggests that folder.tbn can be used. In general folder.jpg is superior as it is detected during a scan i.e. XBMC will correctly use folder.jpg but not folder.tbn.
* Some documentation suggests that folder.tbn can be used. In general folder.jpg is superior as it is detected during a scan i.e. XBMC will correctly use folder.jpg but not folder.tbn.
* Note that folder.jpg '''MUST''' be named .jpg, even if it is a .png format image.
* Note that folder.jpg '''MUST''' be named .jpg, even if it is a .png format image.
* You CAN force XBMC to look for folder image (Cover Art) files with different file names to "folder.jpg" (eg. cover.jpg, poster.jpg) by setting the <dvdthumbs> tag in the [http://wiki.xbmc.org/index.php?title=Userdata/advancedsettings.xml advancedsettings.xml] file.
* You CAN force XBMC to look for folder image (Cover Art) files with different file names to "folder.jpg" (eg. cover.jpg, poster.jpg) by setting the [http://wiki.xbmc.org/index.php?title=Userdata/advancedsettings.xml#.3Cdvdthumbs.3E <dvdthumbs>] tag in the [http://wiki.xbmc.org/index.php?title=Userdata/advancedsettings.xml advancedsettings.xml] file.


<br />
<br />

Revision as of 13:32, 2 May 2012

Cleanup.png This page or section may require cleanup, updating, spellchecking, reformatting and/or updated images. Please improve this page if you can. The discussion page may contain suggestions.


Template:XBMC wiki toc Inline 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).

When talking about movies the terms "Cover Art", "Posters" (term used on TheTVDB.org) and "Folder Image" are all used to refer to the SAME thing we are talking about here. In the XBMC world Thumbnail is the generic term that encompasses all of those things, so don't get confused.

Also note that despite what the term Thumbnail implies, thumbnails in XBMC are NOT necessarily small images in terms of resolution or size on disk. A Thumbnail in XBMC can be a 800 x 1200 pixel image with a file size of over 300 Kilobytes for example, but typically thumbnails are restricted to smaller sizes than that due to performance concerns.

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 alternatively downloaded thumbnails that others have created from the internet. 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.

See here for a thorough description of the thumbnail cache

In order for your custom thumbnail to show, you may have to delete the cached thumbnail.

When thumbnails are cached they may be scaled down from the source image. How much they are scaled down depends on a setting that you can control using the <thumbsize> tag in advancedsettings.xml.

If you are running XBMC on a very high resolution display and you have Movie cover art, for example, that is displayed as a very large image onscreen with the skin and layout that you are using, then you may want to adjust that <thumbsize> tag to increase the display quality of your thumbnails.

Be aware, however, that increasing the size of cached thumbnails obviously carries an implied disk space usage, and possible XBMC performance penalty, with it.

Wide Icons

Library.videos.tvshowwide.WSCR.jpg

Some of the most visually appealing forms of thumbnails are Wide Banner Icons. They were added in XBMC on the 1st. of January 2007 and are now an integral part of the application. With different adjustments to the skin xml files, you may disable title names, or stack one icon on top of another.
To show big Icons, switch to one of the new views, Big Wide or Wide Icons.

Remember View: XBMC Will now remember what view you have for each folder. (Thus you can keep your TV Shows in Wide, and your Movies in Icon)

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

Folder Thumbnails

If you store each of your media files in separate subfolders to keep things organized, you can also make the folder have a custom thumbnail image. To do this you either need to save your JPG/PNG thumbnail as folder.jpg and place it inside your movie/album folder, or you can save it as <foldername>.tbn and place it at the same level as the folder in the directory tree.

  • Remember, XBMC first checks for <foldername>.tbn before checking for folder.jpg.
  • Some documentation suggests that folder.tbn can be used. In general folder.jpg is superior as it is detected during a scan i.e. XBMC will correctly use folder.jpg but not folder.tbn.
  • Note that folder.jpg MUST be named .jpg, even if it is a .png format image.
  • You CAN force XBMC to look for folder image (Cover Art) files with different file names to "folder.jpg" (eg. cover.jpg, poster.jpg) by setting the <dvdthumbs> tag in the advancedsettings.xml file.


Examples:

Movies\path\foldername\
Movies\path\foldername.tbn

or

Movies\path\moviename\folder.jpg
Music\path\album\folder.jpg

Now your media folder will have a lovely custom thumbnail-image.

You can via advancedsettings.xml change the default filename of the image that XBMC uses for music folders. See the <musicthumbs> tag. for more information.

Files.myvideos.jpg

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 XBMC device (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.

Notes: Running a scan automatically enables 'tag reading' so everything can be cached. Once a scan is run, all your files and their associated thumbnails are stored in the database.
The Album Information dialog (available from the context menu) will allow you to choose between the cover art available for download from allmusic.com and any user-defined thumbnail you may have.
Press the "Get Thumb" button to bring up a choice of the local thumbnails you have, the currently assigned thumbnail and the allmusic.com thumbnail.

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:

1) Cached Thumbnail
Thumbnails are cached to UserData\Thumbnails\Video using the CRC of the path of the file or folder.
2) User-Defined Thumbnail
For files: XBMC checks for <filename>.tbn and uses that if it exists.The thumbnail is cached the first time it is read.

For movies, movie.tbn will override any other thumb.

For folders: XBMC first checks for <foldername>.tbn in the same directory as the folder is in. If no <foldername>.tbn exists XBMC then checks for folder.jpg inside the movie-folder. In either case the first found thumb of those is cached.
Files.videos.thumbnails.WSCR.jpg

Examples for User-Defined Video Thumbnails

Single Video File

The following example "videofilename.avi" will now use the thumbnail "videofilename.tbn".

Videos\path\videofilename.tbn
Videos\path\videofilename.avi
Multi Part (Stacked) Video Files

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
Movie

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
TV Shows
TV\showfolder\folder.jpg
TV Show Season Thumbnails

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 Specials
TV\showfolder\season-specials.tbn
For the all seasons item
TV\showfolder\season-all.tbn
Fanart
Videos\path\fanart.jpg
TV\showfolder\fanart.jpg
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. You may need to use the command line to create this directory in Windows.
The folder can then contain actor images using the following naming convention:

Videos\path\.actors\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
<MyHolidayPictures>\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 XBMC device harddrive!

Simply modify your source as shown:

<source>
   <name>Music</name>
   <path>xbms://192.168.1.100:1400/Music/</path>
   <thumbnail>F:\Apps\XBMC\thumbs\shares\thumb.png</thumbnail>
</source>

Icons used in XBMC skins

The filenames of the default icons are as follows:

Add-ons

DefaultAddon.png

DefaultAddonAlbumInfo.png

DefaultAddonArtistInfo.png

DefaultAddonLyrics.png

DefaultAddonMovieInfo.png

DefaultAddonMusic.png

DefaultAddonMusicVideoInfo.png

DefaultAddonNone.png

DefaultAddonPicture.png

DefaultAddonProgram.png

DefaultAddonRepository.png

DefaultAddonScreensaver.png

DefaultAddonService.png

DefaultAddonSkin.png

DefaultAddonSubtitles.png

DefaultAddonTvInfo.png

DefaultAddonVideo.png

DefaultAddonVisualization.png

DefaultAddonWeather.png

DefaultAddonWebSkin.png

Music

DefaultAlbumCover.png

DefaultArtist.png

DefaultAudio.png

DefaultMusicAlbums.png

DefaultMusicArtists.png

DefaultMusicCompilations.png

DefaultMusicGenres.png

DefaultMusicPlaylists.png

DefaultMusicPlugins.png

DefaultMusicRecentlyAdded.png

DefaultMusicRecentlyPlayed.png

DefaultMusicSearch.png

DefaultMusicSongs.png

DefaultMusicTop100.png

DefaultMusicTop100Albums.png

DefaultMusicTop100Songs.png

DefaultMusicVideos.png

DefaultMusicVideoTitle.png

DefaultMusicYears.png

Videos

DefaultActor.png

DefaultCountry.png

DefaultDirector.png

DefaultGenre.png

DefaultMovies.png

DefaultMovieTitle.png

DefaultRecentlyAddedEpisodes.png

DefaultRecentlyAddedMovies.png

DefaultRecentlyAddedMusicVideos.png

DefaultSets.png

DefaultStudios.png

DefaultTVShows.png

DefaultTVShowTitle.png

DefaultVideo.png

DefaultVideoCover.png

DefaultVideoPlaylists.png

DefaultVideoPlugins.png

DefaultYear.png

Generic

DefaultAddSource.png

DefaultCDDA.png

DefaultDVDEmpty.png

DefaultDVDRom.png

DefaultFile.png

DefaultFolder.png

DefaultFolderBack.png

DefaultHardDisk.png

DefaultNetwork.png

DefaultPicture.png

DefaultPlaylist.png

DefaultProgram.png

DefaultRemovableDisk.png

DefaultScript.png

DefaultShortcut.png

DefaultVCD.png

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 smb:// protocol designation and optional username and password.

Examples

  • 123456789 returns 0376e6e7
  • F:\Videos\Nosferatu.avi returns 2a6ec78d
  • smb://user:pass@server/share/directory/ returns c5559f13
  • smb://user:pass@server/share/directory/file.ext returns 8ce36055

Remember:

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

Sample Code

The following code snippets produce the same output as the XBMC hashing function.

C#

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);
}

Python

Code provided by baderj.

def get_crc32( string ):
    string = string.lower()        
    bytes = bytearray(string.encode())
    crc = 0xffffffff;
    for b in bytes:
        crc = crc ^ (b << 24)          
        for i in range(8):
            if (crc & 0x80000000 ):                 
                crc = (crc << 1) ^ 0x04C11DB7                
            else:
                crc = crc << 1;                        
        crc = crc & 0xFFFFFFFF
        
    return '%08x' % crc

Perl

Code provided by baderj.

sub get_crc32 {
    my $string = shift;
    my @bytes = unpack 'C*', $string;
    my $crc = 0xffffffff;
    for my $b (@bytes) {        
        $crc = $crc ^ ($b << 24);        
        for(my $i = 0; $i < 8; $i++) {
            if ($crc & 0x80000000 ) {                
                $crc = ($crc << 1) ^ 0x04C11DB7;                
            } else {
                $crc = $crc << 1;
            }            
        }        
        $crc = $crc & 0xFFFFFFFF;         
    }
    return sprintf('%08x', $crc);

}

PHP

Code provided by tamplan and narfight.

 private function _get_hash($file_path)
{
   $chars = strtolower($file_path);
   $crc = 0xffffffff;

   for ($ptr = 0; $ptr < strlen($chars); $ptr++)
   {
      $chr = ord($chars[$ptr]);
      $crc ^= $chr << 24;

      for ((int) $i = 0; $i < 8; $i++)
      {
         if ($crc & 0x80000000)
         {
            $crc = ($crc << 1) ^ 0x04C11DB7;
         }
         else
         {
            $crc <<= 1;
         }
      }
   }

   // Système d'exploitation en 64 bits ?
   if (strpos(php_uname('m'), '_64') !== false)
   {
      //Formatting the output in a 8 character hex
      if ($crc>=0)
      {
         $hash = sprintf("%16s",sprintf("%x",sprintf("%u",$crc)));
      }
      else
      {
         $source = sprintf('%b', $crc);
         $hash = "";
         while ($source <> "")
         {
            $digit = substr($source, -4);
            $hash = dechex(bindec($digit)) . $hash;
            $source = substr($source, 0, -4);
         }
      }
      $hash = substr($hash, 8);
   }
   else
   {
      //Formatting the output in a 8 character hex
      if ($crc>=0)
      {
         $hash = sprintf("%08s",sprintf("%x",sprintf("%u",$crc)));
      }
      else
      {
         $source = sprintf('%b', $crc);
         $hash = "";
         while ($source <> "")
         {
            $digit = substr($source, -4);
            $hash = dechex(bindec($digit)) . $hash;
            $source = substr($source, 0, -4);
         }
      }
   }

   return $hash;
}

Javascript

Code provided by Fiasco and baderj.

Number.prototype.unsign = function(bytes) {
   return this >= 0 ? this : Math.pow(256, bytes || 4) + this;
};

function FindCRC(data) {
   var CRC = 0xffffffff;
   data = data.toLowerCase();
   for ( var j = 0; j < data.length; j++) {
      var c = data.charCodeAt(j);
      CRC ^= c << 24;
      for ( var i = 0; i < 8; i++) {
         if (CRC.unsign(8) & 0x80000000) {
            CRC = (CRC << 1) ^ 0x04C11DB7;
         } else {
            CRC <<= 1;
         }
      }
   }
   if (CRC < 0)
      CRC = CRC >>> 0;
   var CRC_str = CRC.toString(16);
   while (CRC_str.length < 8) {
      CRC_str = '0' + CRC_str;
   }
   return CRC_str;
}

MySQL Function

Found this to be very useful when using a MySQL backend and moving/updating files. Code provided by User:Nxj18

create function fnXBMCHash(sourceString VARCHAR(2000))
returns varchar(8) deterministic
begin
    declare crc bigint unsigned; -- bigint to prevent casting/overflow issues
    declare len, cur, i int;
    declare mask, xorBase, curCharCode, intMask bigint unsigned;
    
    set intMask = pow(2,32) - 1;
    set crc = pow(2,32) - 1; -- 0xFFFFFFFF
    set sourceString = LOWER(TRIM(sourceString));
    set mask = pow(2,31);  -- 0x8000000
    set xorBase = 79764919; -- 0x04C11DB7
    set len = LENGTH(sourceString), cur = 0;
    while cur < len do
        set curCharCode = ASCII(SUBSTRING(sourceString,cur+1,1));
        set crc = (crc ^ (curCharCode << 24)) & intMask;
        set i = 0;
        while i < 8 do
            set crc = (case (crc & mask) 
                when mask then (crc << 1) ^ xorBase
                else (crc << 1) end) & intMask;
            set i = i + 1;
        end while;
        set cur = cur + 1;
    end while;
    return lpad(hex(crc),8,'0');
end;

AutoIT Function

Code provided by Nexus.Commander.

func CRC32_XBMC($string_input)
	$chars = StringSplit(StringLower($string_input),'',2)
	$crc = 0xffffffff
	For $ptr = 0 To UBound($chars)-1
		$chr = StringToBinary($chars[$ptr],4)
		$crc = BitXOR($crc,BitShift($chr,-24))
		For $i = 0 To 7
			if BitAND($crc,0x80000000) = 0x80000000 Then
				$crc = BitXOR(BitShift($crc,-1),0x04C11DB7)
			else
				$crc = BitShift($crc,-1)
			EndIf
		Next
	Next
	Return Hex($crc)
EndFunc