Thumbnail Database format description
The format is the same as the ID3v2 format customized to store thumbnails. |
The structure of the format is consisting of a first frame ID CATA that stores the catalog of thumbnails in a string list (text) format:
D:\card.jpg //* File name with full path
41639 //* File size - for simplicity the file size is checked whether the file had undergone changes
300 //* Width of the original file, -1 for non image files
250 //* Height of the original file, -1 for non image files
D:\ace.png //* The following files...
Second frame is the "INFO" frame, describing the version and additional information, like "CATA" value count.
And an "unlimited" number (256MB max. file size) of "THUM" frames containing thumbnail files, in most cases PNGs that must be in the same order as given in the "CATA" frame, that is, in the catalog.
An "unlimited" number of "SESC" frames containing sample data cache for the audio streams.
The SESC frame is compressed, the THUM is not (as it is PNG), but can be - frame flag is set according if so.
The file is in most cases called: "Thumbs Filesystem Dialogs.db"
If the THUM frame contains a PNG image, then the quality of image thumbnails is better than in Thumbs.db.
Because full path is stored the database can be everywhere (per folder, 1 global database, etc.).
Feel free to add more thumbnail formats (frame formats) if you wish.
If you like this software please register Filesystem Dialogs.
Delphi TThumbDatabase class
function AddThumb(FullFileName: String; Image: TStream; Width, Height: Int64; FrameID: String; Compress: Boolean; ForceUpdate: Boolean): Boolean;
function GetThumb(FileName: String; var Image: TStream; var Width, Height: Int64; var FrameID: String): Boolean;
function GetThumbInfo(FileName: String; var Width, Height: Int64; var FrameID: String): Boolean;
function SetThumb(FullFileName: String; Image: TStream; Width, Height: Int64; Force: Boolean): Boolean;
function GetThumbIndex(FullFileNameWithPath: String): Int64;
function Load(FileName: String): Boolean;
function Save(FileName: String): Boolean;
See the download page.
Forum: Filesystem Dialogs