2016-09-01 3 views
1

Я пытаюсь использовать камеру в мобильном приложении Windows 10, но возникает ошибка, когда я делаю снимок и пытаюсь показать его на экране.windows 10 mobile camera

Вот код:

CameraCaptureUI captureUI = new CameraCaptureUI(); 
captureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg; 
captureUI.PhotoSettings.CroppedSizeInPixels = new Size(200, 200); 

StorageFile photo = await captureUI.CaptureFileAsync(CameraCaptureUIMode.Photo); 

if (photo == null) 
{ 
    // User cancelled photo capture 
    return; 
} 

StorageFolder destinationFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("ProfilePhotoFolder", CreationCollisionOption.OpenIfExists); 

await photo.CopyAsync(destinationFolder, "ProfilePhoto.jpg", NameCollisionOption.ReplaceExisting); 
await photo.DeleteAsync(); 

IRandomAccessStream stream = await photo.OpenAsync(FileAccessMode.Read); 
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream); 
SoftwareBitmap softwareBitmap = await decoder.GetSoftwareBitmapAsync(); 

SoftwareBitmap softwareBitmapBGR8 = SoftwareBitmap.Convert(softwareBitmap, 
BitmapPixelFormat.Bgra8, 
BitmapAlphaMode.Premultiplied); 

SoftwareBitmapSource bitmapSource = new SoftwareBitmapSource(); 
await bitmapSource.SetBitmapAsync(softwareBitmapBGR8); 

imageControl.Source = bitmapSource; 

Сообщение об исключении:

Исключение типа 'System.IO.FileNotFoundException' произошло в System.Private.CoreLib.dll, но не был обработан в коде пользователя

Дополнительная информация: Система не может найти указанный файл. (Исключение из HRESULT: 0x80070002)

Если есть обработчик для этого исключения, программа может быть благополучно продолжил «

Кто-то может помочь мне с этим

+1

Вы разрешили это? –

+0

Да, это так. Спасибо! –

ответ

1

Это потому, что вы.? удалил photo, но затем пытается прочитать photo, который только что удален, так что исключение «FileNotFound» выбросит. Пожалуйста, удалите следующую строку кода он будет работать.

await photo.DeleteAsync(); 

Но я думаю, что вы действительно хотите удалить фотографию, полученную с CameraCaptureUI, а затем прочитать фотографию из уже скопированной локальной папки. В этом случае код должен быть следующим:

await photo.CopyAsync(destinationFolder, "ProfilePhoto.jpg", NameCollisionOption.ReplaceExisting); 
await photo.DeleteAsync(); 
StorageFile newphoto = await destinationFolder.GetFileAsync("ProfilePhoto.jpg"); 
IRandomAccessStream stream = await newphoto.OpenAsync(FileAccessMode.Read); 
Смежные вопросы