private bool PopulateThumbnailAndMetaData(MediaItem mediaItem) { byte[] thumb = null; if (mediaItem.ThumbnailImageSource == null) { // ReSharper disable once StyleCop.SA1117 thumb = _thumbnailService.GetThumbnail( mediaItem.FilePath, Unosquare.FFME.MediaElement.FFmpegDirectory, mediaItem.MediaType.Classification, mediaItem.LastChanged, out var _); if (thumb == null) { return(false); } } DispatcherHelper.CheckBeginInvokeOnUI(() => { mediaItem.ThumbnailImageSource = GraphicsUtils.ByteArrayToImage(thumb); }); return(true); }
private ImageGalleryImage CreateImageFromMediaFile(MediaFile mediaFile, ImageGallerySettingsRecord imageGallerySettings) { if (imageGallerySettings == null) { throw new ArgumentNullException("imageGallerySettings"); } var imageSettings = GetImageSettings(imageGallerySettings, mediaFile.Name); bool isValidThumbnailSize = imageGallerySettings.ThumbnailWidth > 0 && imageGallerySettings.ThumbnailHeight > 0; Thumbnail thumbnail = null; if (isValidThumbnailSize) { thumbnail = _thumbnailService.GetThumbnail(_storageProvider.Combine(mediaFile.FolderName, mediaFile.Name), imageGallerySettings.ThumbnailWidth, imageGallerySettings.ThumbnailHeight, imageGallerySettings.KeepAspectRatio); } return(new ImageGalleryImage { PublicUrl = _mediaService.GetPublicUrl(Path.Combine(mediaFile.FolderName, mediaFile.Name)), Name = mediaFile.Name, Size = mediaFile.Size, User = mediaFile.User, LastUpdated = mediaFile.LastUpdated, Caption = imageSettings == null ? string.Empty : imageSettings.Caption, Thumbnail = thumbnail, Title = imageSettings == null ? null : imageSettings.Title, Position = imageSettings == null ? 0 : imageSettings.Position }); }
private void PopulateThumbnail(MediaItem mediaItem) { if (!IsThumbnailPopulated(mediaItem)) { // ReSharper disable once StyleCop.SA1117 byte[] thumb = _thumbnailService.GetThumbnail( mediaItem.FilePath, Unosquare.FFME.MediaElement.FFmpegDirectory, mediaItem.MediaType.Classification, mediaItem.LastChanged, out var _); if (thumb != null) { DispatcherHelper.CheckBeginInvokeOnUI(() => { mediaItem.ThumbnailImageSource = GraphicsUtils.ByteArrayToImage(thumb); }); } } }
private async void GenerateThumbnail() { StorageItemThumbnail thumb = null; try { thumb = await _thumbsService.GetThumbnail(File); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } if (thumb != null) { await DispatchHelper.InvokeAsync(async() => { var image = new BitmapImage(); await image.SetSourceAsync(thumb); Image = image; }); } }
private async Task PopulateThumbnailAsync(MediaItem mediaItem) { if (mediaItem.FilePath != null && mediaItem.MediaType != null && !IsThumbnailPopulated(mediaItem)) { byte[]? thumb = null; await Task.Run( () => { thumb = _thumbnailService.GetThumbnail( mediaItem.FilePath, Unosquare.FFME.Library.FFmpegDirectory, mediaItem.MediaType.Classification, mediaItem.LastChanged, out var _); }, _cancellationToken); if (thumb != null && !IsThumbnailPopulated(mediaItem) && !_cancellationToken.IsCancellationRequested) { mediaItem.ThumbnailImageSource = GraphicsUtils.ByteArrayToImage(thumb); } } }
public async Task <ActionResult> ThumbnailDownload(int id) { try { MemoryStream stream = new MemoryStream(); string fileName = await _thumbnailService.GetThumbnail(id, stream); if (string.IsNullOrEmpty(fileName)) { return(StatusCode(400)); } stream.Position = 0; FileStreamResult res = new FileStreamResult(stream, MediaTypeNames.Image.Jpeg) { FileDownloadName = fileName }; return(res); } catch (Exception) { return(StatusCode(404)); } }
protected override void ProcessRequest(RequestItem request) { var size = request.Width == 128 ? ThumbnailSize.Normal : ThumbnailSize.Large; request.Result = thumbnailService.GetThumbnail(request.Uri, size); }
// Returns false is no snapshot generation was required, true otherwise public static async Task <Boolean> GenerateThumbnail(VideoItem videoItem) { if (videoItem.HasThumbnail) { return(false); } try { if (Locator.MediaPlaybackViewModel.ContinueIndexing != null) { await Locator.MediaPlaybackViewModel.ContinueIndexing.Task; Locator.MediaPlaybackViewModel.ContinueIndexing = null; } #if WINDOWS_PHONE_APP if (MemoryUsageHelper.PercentMemoryUsed() > MemoryUsageHelper.MaxRamForResourceIntensiveTasks) { return(false); } #endif WriteableBitmap image = null; StorageItemThumbnail thumb = null; // If file is a mkv, we save the thumbnail in a VideoPic folder so we don't consume CPU and resources each launch if (VLCFileExtensions.MFSupported.Contains(videoItem.File.FileType.ToLower())) { thumb = await ThumbsService.GetThumbnail(videoItem.File).ConfigureAwait(false); } // If MF thumbnail generation failed or wasn't supported: if (thumb == null) { var res = await ThumbsService.GetScreenshot(videoItem.File).ConfigureAwait(false); if (res == null) { return(true); } image = res.Bitmap(); await App.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => videoItem.Duration = TimeSpan.FromMilliseconds(res.Length())); } if (thumb != null || image != null) { // RunAsync won't await on the lambda it receives, so we need to do it ourselves var tcs = new TaskCompletionSource <bool>(); await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, async() => { if (thumb != null) { image = new WriteableBitmap((int)thumb.OriginalWidth, (int)thumb.OriginalHeight); await image.SetSourceAsync(thumb); } await DownloadAndSaveHelper.WriteableBitmapToStorageFile(image, videoItem.Id.ToString()); videoItem.ThumbnailPath = String.Format("{0}{1}.jpg", Strings.VideoPicFolderPath, videoItem.Id); tcs.SetResult(true); }); await tcs.Task; } videoItem.HasThumbnail = true; return(true); } catch (Exception ex) { LogHelper.Log(ex.ToString()); } return(false); }