/// <summary> /// Captures a photo. Photo data is stored to ImageStream, and /// application is navigated to the preview page after capturing. /// </summary> private async Task Capture() { bool goToPreview = false; MemoryStream photoStream = new MemoryStream(); MemoryStream thumbnailStream = new MemoryStream(); if (!_capturing) { _capturing = true; CameraCaptureSequence sequence = _photoCaptureDevice.CreateCaptureSequence(1); sequence.Frames[0].CaptureStream = photoStream.AsOutputStream(); sequence.Frames[0].ThumbnailStream = thumbnailStream.AsOutputStream(); await _photoCaptureDevice.PrepareCaptureSequenceAsync(sequence); await sequence.StartCaptureAsync(); _capturing = false; goToPreview = true; } _photoCaptureDevice.SetProperty( KnownCameraPhotoProperties.LockedAutoFocusParameters, AutoFocusParameters.None); if (goToPreview) { NokiaImaginHelper.PreparePhoto(photoStream, thumbnailStream); NavigationService.Navigate(new Uri(String.Format("/FilterPreviewPage.xaml?index={0}&shouldCrop={1}", _dateIndex, _sizeMode), UriKind.Relative)); } }
void photoTask_Completed(object sender, PhotoResult e) { if (e.TaskResult == TaskResult.OK && e.Error == null) { var photoStream = new MemoryStream(); var thumbnailStream = new MemoryStream(); var library = new MediaLibrary(); var dateTaken = DateTime.Now; bool found = false; foreach (var pic in library.Pictures) { if (e.OriginalFileName.Equals(MediaLibraryExtensions.GetPath(pic))) { pic.GetImage().CopyTo(photoStream); photoStream.Seek(0, SeekOrigin.Begin); pic.GetPreviewImage().CopyTo(thumbnailStream); thumbnailStream.Seek(0, SeekOrigin.Begin); dateTaken = pic.Date; NokiaImaginHelper.PreparePhoto(photoStream, thumbnailStream); found = true; break; } } if (found) { NavigationService.Navigate(new Uri(String.Format("/FilterPreviewPage.xaml?dateTaken={0}&shouldCrop={1}", dateTaken.Ticks, Constant.NORMAL_MODE), UriKind.Relative)); } } }