示例#1
0
        /// <summary>
        /// Retrieves a thumbnail for the specified file.
        /// </summary>
        /// <param name="fileInfo">File to retrieve the thumbnail for.</param>
        /// <returns>Image thumbnail.</returns>
        public static Image Thumbnail(this FileInfo fileInfo)
        {
            try
            {
                ShellThumbnail thumb = new ShellThumbnail();

                return thumb.GetThumbnail(fileInfo.FullName);
            }
            catch (Exception)
            {
                // create a dummy file to extract the icon from
                string tempPath = Path.GetTempPath() + StringUtilities.GetRandomString(10) + fileInfo.Extension;

                File.Create(tempPath);

                SysImageList list = new SysImageList(SysImageListSize.extraLargeIcons);

                Bitmap bitmap = list.Icon(list.IconIndex(tempPath)).ToBitmap();

                File.Delete(tempPath);

                Bitmap copy = bitmap.Copy();

                return copy;
            }
        }