1

Я добавил WriteableBitmapExtension через NuGet к моему приложению Windows Phone 8.1 WinRT. У меня есть функции для захвата изображения с камеры и сохранения его в библиотеке изображений. Я попытался повернуть захваченное изображение перед сохранением, и я нашел решение здесь WriteableBitmap crashes program with no message?. Все отлично работает на эмуляторе, но когда я запускаю приложение на Nokia Lumia 630, он падает через несколько секунд после съемки фотографии без сообщения debbuger. Может ли кто-нибудь помочь мне с этой проблемой? Вот мой код, принимая фото:WriteableBitmapExtension аварийно отключает приложение на устройстве

public WriteableBitmap Image 
    { 
     get 
     { 
      return this.image; 
     } 

     set 
     { 
      this.image = value; 
      this.RaisePropertyChanged(() => this.Image); 
     } 
    } 

private async void TakePhoto() 
     { 
      using (var stream = new InMemoryRandomAccessStream()) 
      { 
       var imgEncodingProperties = ImageEncodingProperties.CreateJpeg(); 
       var img = BitmapFactory.New(640, 480); 
       await this.MediaCapture.CapturePhotoToStreamAsync(imgEncodingProperties, stream); 
       stream.Seek(0); 
       img.SetSource(stream); 
       WriteableBitmapExtensions.DrawLine(img, 10, 10, 300, 300, Colors.Black); 
       this.Image = img.Rotate(90); 
       this.TurnOffCaptureMode(); 
      } 
     } 

private void TurnOffCaptureMode() 
     { 
      this.MediaCapture.StopPreviewAsync(); 
      this.IsInCaptureMode = false; 
     } 

ответ

0

Альтернативное решение здесь. 1 Открыть файл Пикет использовать встроенную камеру, чтобы сделать снимок.

var openPicker = new FileOpenPicker(); 
    openPicker.ContinuationData["Action"] = "SendPicture"; 
    openPicker.FileTypeFilter.Add(".jpg"); 
    openPicker.FileTypeFilter.Add(".png"); 
    openPicker.PickSingleFileAndContinue(); 

***2. In app.xaml.cs you will get captured image. as below.*** 


    public void Continue(IContinuationActivatedEventArgs args) 
{ 
    if(args.Kind == ActivationKind.PickFileContinuation) 
    { 
     var openPickerContinuationArgs = args as FileOpenPickerContinuationEventArgs; 

     // Recover the "Action" info we stored in ContinuationData 
     string action = (string) openPickerContinuationArgs.ContinuationData["Action"]; 

     if(openPickerContinuationArgs.Files.Count > 0) 
     { 
      // TODO: Get the files here 
     } 
     else 
     { 
      // TODO: Write code here to handle picker cancellation. 
     } 
    } 
}