Esempio n. 1
0
        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);
     }
 }