public override PreviewBitmapResult GetPreviewBitmap(ref string remoteName, int width, int height, out Bitmap returnedBitmap) { string[] images = new[] { "Blue hills.jpg", "Sunset.jpg", "Water lilies.jpg", "Winter.jpg" }; string imageFolder = Settings["iconFolder"]; returnedBitmap = null; PreviewBitmapResult result = PreviewBitmapResult.None; string bitmapFile; remoteName = remoteName.Substring(1); if (remoteName.EndsWith(@"..\")) { return(PreviewBitmapResult.None); } if (Directory.Exists(remoteName)) { int imgIndex = rnd.Next(4); bitmapFile = Path.Combine(imageFolder, images[imgIndex]); Image img = Image.FromFile(bitmapFile); returnedBitmap = new Bitmap(img, width / rnd.Next(1, 3), height / rnd.Next(1, 3)); result = PreviewBitmapResult.Extracted; } else if (File.Exists(remoteName)) { string extension = Path.GetExtension(remoteName); if (extension != null) { if (extension.ToUpper().Equals(".TXT")) { bitmapFile = "logo_large.gif"; remoteName = Path.Combine(imageFolder, bitmapFile); result = PreviewBitmapResult.ExtractYourself; } else if (extension.ToUpper().Equals(".EXE")) { bitmapFile = "Exe_Bmp.png"; string tmpFile = Path.Combine(Environment.ExpandEnvironmentVariables("%TEMP%"), bitmapFile); try { File.Copy(Path.Combine(imageFolder, bitmapFile), tmpFile, false); } catch (Exception) { } remoteName = tmpFile; result = PreviewBitmapResult.ExtractYourselfAndDelete; } } result = result | PreviewBitmapResult.Cache; } return(result); }
public PreviewBitmapResult GetPreviewBitmap(WsPath filePath, int width, int height) { try { return(ExecuteAsync(filePath, async() => { WsFile file = await _apiClient.FindFile(filePath.GetFilePath()); if (file != null) { WsFolder folder = await _apiClient.FindFolder(filePath.Parent.GetFolderPath()); if (folder != null) { WsFilePreview filePreview = await _filesPreviewCache.FindFilePreview(folder, filePath.Name); byte[] jpgData = await filePreview.JpgData; if (jpgData?.Length > 0) { using (MemoryStream jpgStream = new MemoryStream(jpgData)) { Image jpg = Image.FromStream(jpgStream); decimal ratio = (decimal)jpg.Width / jpg.Height; if (ratio > 1) { height = (int)(height / ratio); } if (ratio < 1) { width = (int)(width / ratio); } Bitmap bmp = new Bitmap(jpg, width, height); return PreviewBitmapResult.Extracted(bmp, null, false); } } } } return PreviewBitmapResult.None; })); } catch { return(PreviewBitmapResult.None); } }