public async Task ApplyDifficultyToImage(Stream image, Difficulty level, Image resultImage) { try { using (EditingSession _session = await EditingSessionFactory.CreateEditingSessionAsync(image)) { switch (level) { case Difficulty.Easy: _session.AddFilter(_easyFilterGroup); break; case Difficulty.Moderate: _session.AddFilter(_moderateFilterGroup); break; case Difficulty.Hard: _session.AddFilter(_hardFilterGroup); break; case Difficulty.VeryHard: _session.AddFilter(_veryHardFilterGroup); break; case Difficulty.ReallyHard: _session.AddFilter(_impossibleFilterGroup); break; default: break; } //Render the image to the Image control in the Quiz page await _session.RenderToImageAsync(resultImage); } } catch (Exception e) { MessageBox.Show("An error occurred while processing the image: " + e.Message); } }
private async void SplitImageFromBitmap(WriteableBitmap bmp) { _session = new EditingSession(bmp.AsBitmap()); if (playMode == PlayMode.CameraVideo) _session.AddFilter(FilterFactory.CreateStepRotationFilter(Rotation.Rotate90)); if (playMode == PlayMode.CameraVideo) _session.AddFilter(FilterFactory.CreateCropFilter(new Windows.Foundation.Rect(15, 20, 450, 600))); IFilter selectedFilter = GetFilter(); try { if (Utils.IsChallengeMode()) { foreach (Image img in images) { _session.AddFilter(FilterFactory.CreateCropFilter(new Windows.Foundation.Rect(images.IndexOf(img) % 3 * 150, images.IndexOf(img) / 3 * 150, 150, 150))); if (selectedFilter != null ) _session.AddFilter(selectedFilter); await _session.RenderToImageAsync(img, OutputOption.PreserveAspectRatio); if (selectedFilter != null && _session.CanUndo()) _session.Undo(); if (_session.CanUndo()) _session.Undo(); } } else { foreach (Image img in images) { _session.AddFilter(FilterFactory.CreateCropFilter(new Windows.Foundation.Rect(images.IndexOf(img) % 6 * 75, images.IndexOf(img) / 6 * 75, 75, 75))); if (selectedFilter != null) _session.AddFilter(selectedFilter); await _session.RenderToImageAsync(img, OutputOption.PreserveAspectRatio); if (selectedFilter != null && _session.CanUndo()) _session.Undo(); if (_session.CanUndo()) _session.Undo(); } } } catch (Exception exception) { MessageBox.Show("Exception:" + exception.Message); return; } if (playMode == PlayMode.CameraVideo) { processNextFrame(); } }
private async void SplitImage(Stream stream) { int dimension; _session = await EditingSessionFactory.CreateEditingSessionAsync(stream); IFilter selectedFilter = GetFilter(); if (Utils.IsChallengeMode()) { dimension = 150; } else { dimension = 75; } try { stream.Position = 0; foreach (Image img in images) { _session.UndoAll(); _session.AddFilter(FilterFactory.CreateCropFilter(new Windows.Foundation.Rect(Canvas.GetLeft(img), Canvas.GetTop(img), dimension, dimension))); if (selectedFilter != null) _session.AddFilter(selectedFilter); await _session.RenderToImageAsync(img, OutputOption.PreserveAspectRatio); } progressbarIndeterminateDownload.Visibility = System.Windows.Visibility.Collapsed; progressbarDescription.Visibility = System.Windows.Visibility.Collapsed; isLoading = false; playButton.Visibility = System.Windows.Visibility.Visible; } catch (Exception exception) { MessageBox.Show("Exception:" + exception.Message); return; } }