Saving thumbnails
Sometimes you need a video thumbnail for use outside of Fast video cataloger. You can easily just right click the thumbnail and select “save as”. This is fast and easy if its a single thumbnail you want to save but it will be very time consuming if you want to save all thubmnails for a video, or for several videos.
This is a good example of where the scripting support in Fast video cataloger can help, and it is really easy.
Exporting thumbnails from C# script
This example shows how to export out all thumbnails for the currently selected videos as files.
For each video we create a foder called thumbnails in the same folder as the video file. Then we get all the thumbnails for the selected video by calling GetThumbnailsForVideo(video_id, true );
we get all the thumbnails and only need to go through them all, generate a filename and call System.IO.File.WriteAllBytes(filename, image_data);
to write out the image to file.
using System; using System.IO; using System.Collections.Generic; using VideoCataloger; using VideoCataloger.RemoteCatalogService; class ExportThumbnails { static public void Run(IScripting scripting, string arguments) { scripting.GetConsole().Clear(); var service = scripting.GetVideoCatalogService(); ISelection selection = scripting.GetSelection(); Listselected = selection.GetSelectedVideos(); foreach (long video_id in selected) { var video_file_entry = service.GetVideoFileEntry(video_id); string target_folder = video_file_entry.FilePath; int path_end = target_folder.LastIndexOf('\\'); target_folder = target_folder.Substring(0, path_end+1); target_folder += "Thumbnails\\"; try { DirectoryInfo info = Directory.CreateDirectory(target_folder); } catch (Exception ex) { scripting.GetConsole().WriteLine( ex.Message ); } long image_no = 1; Dictionary thumbnails = service.GetThumbnailsForVideo(video_id, true ); foreach (KeyValuePair thumbnail_entry in thumbnails ) { byte[] image_data = thumbnail_entry.Value.Image; string filename = target_folder + image_no.ToString() + ".jpg"; scripting.GetConsole().WriteLine("Saving image to : " + filename); System.IO.File.WriteAllBytes(filename, image_data); image_no++; } } } }