private async void CancelCameraButton_OnClick(object sender, RoutedEventArgs e) { _oReturnObject = new MainPageTransferObject { CallbackName = "Appverse.Media.onFinishedPickingImage", JSONContent = JsonConvert.SerializeObject(_oReturnObject) }; await HideCameraView(); }
private async void CameraShutter_Click(object sender, RoutedEventArgs e) { if (_cameraCapture == null) return; try { using (var memoryStream = new InMemoryRandomAccessStream()) { var jpegFile = await WindowsPhoneUtils.DocumentsFolder.CreateFileAsync( Guid.NewGuid().ToString().Replace("-", String.Empty) + ".jpg", CreationCollisionOption.ReplaceExisting); if (_cameraCapture.VideoDeviceController.FocusControl.Supported) await _cameraCapture.VideoDeviceController.FocusControl.FocusAsync(); await _cameraCapture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreateJpeg(), memoryStream); var dec = await BitmapDecoder.CreateAsync(BitmapDecoder.JpegDecoderId, memoryStream); using (var fileStream = await jpegFile.OpenAsync(FileAccessMode.ReadWrite)) { var enc = await BitmapEncoder.CreateForTranscodingAsync(fileStream, dec); if (_cameraOptions != null && _cameraOptions.ImageScaleFactor != 1) { enc.BitmapTransform.ScaledWidth = (uint)(dec.PixelWidth * _cameraOptions.ImageScaleFactor); enc.BitmapTransform.ScaledHeight = (uint)(dec.PixelHeight * _cameraOptions.ImageScaleFactor); } //roate the image enc.BitmapTransform.Rotation = BitmapRotation.Clockwise90Degrees; //write changes to the image stream await enc.FlushAsync(); } var returnMediaMetadata = await AppverseBridge.Instance.PlatformHandler.GetMediaMetadata(jpegFile); _oReturnObject = new MainPageTransferObject { CallbackName = "Appverse.Media.onFinishedPickingImage", JSONContent = JsonConvert.SerializeObject(returnMediaMetadata) }; } HideCameraView(); } catch (Exception ex) { WindowsPhoneUtils.Log(ex.Message); } }
private void AnalyzeImage(Bitmap bitmap, TimeSpan time) { if (!_qrDetectionModeEnabled) return; var result = _barcodeReader.Decode(bitmap.Buffers[0].Buffer.ToArray(), (int)bitmap.Buffers[0].Pitch, (int)bitmap.Dimensions.Height, RGBLuminanceSource.BitmapFormat.Gray8); Dispatcher.RunAsync(CoreDispatcherPriority.High, () => { if (result == null) { if (_scannerAutoFocus != null) _scannerAutoFocus.BarcodeFound = false; } else { if (_scannerAutoFocus != null) { _cameraCapture.Failed -= CameraCaptureOnFailed; _cameraCapture.ClearEffectsAsync(MediaStreamType.VideoPreview); _scannerAutoFocus.BarcodeFound = true; } var returnQR = new MediaQRContent(result.Text, WindowsPhoneUtils.ZxingToBarcode(result.BarcodeFormat), WindowsPhoneUtils.GetQRTypeFromCode(result)); _oReturnObject = new MainPageTransferObject { CallbackName = "Appverse.Scanner.onQRCodeDetected", JSONContent = JsonConvert.SerializeObject(returnQR) }; if (_qrAutoHandleQrCode) { var launchUri = Uri.IsWellFormedUriString(returnQR.Text, UriKind.RelativeOrAbsolute) ? new Uri(returnQR.Text) : null; var ignore = Launcher.LaunchUriAsync(launchUri).AsTask().Result; } _cameraCapture.ClearEffectsAsync(MediaStreamType.VideoPreview); HideCameraView(); } }); }
private async void CameraGridFadeOutStoryBoard_OnCompleted(object sender, object e) { if (Dispatcher.HasThreadAccess) { PhotoPreview.Source = null; CameraGrid.Visibility = Visibility.Collapsed; CancelCameraButton.IsEnabled = false; ShutterButton.IsEnabled = false; //Return to mainPage passing parameter if (_oReturnObject == null) { if (Frame.CanGoBack) Frame.GoBack(); } else { Frame.Navigate(typeof(MainPage), _oReturnObject); } _oReturnObject = null; GC.Collect(); } else { await Dispatcher.RunAsync(CoreDispatcherPriority.High, () => { CameraGridFadeOutStoryBoard_OnCompleted(sender, e); }); } }