Захваченные фотографии являются черными при использовании MediaCapture на Windows Phone 8.1
Я использую MediaCapture для захвата фотографий и их хранения. Работает в эмуляторе. Но при запуске приложения на реальном телефоне (Nokia Lumia 530) захваченные фотографии просто черные. Они имеют правильный размер, а файл имеет определенную длину в байтах, но при отображении фотографии он черный. Пожалуйста, обратите внимание, что я не использую Silverlight и фиксируюсь на использовании MediaCapture. Камера на телефоне работает при использовании приложения камеры по умолчанию. Манифест приложения включает в себя возможности «Библиотека изображений» и «Веб-камера».
Кто-то знает, что может быть не так?
Вот тестовый код, который я использую:
using (var mediaCapture = new MediaCapture())
{
await mediaCapture.InitializeAsync();
ImageEncodingProperties imageFormat = ImageEncodingProperties.CreateJpeg();
StorageFile photoFile = await KnownFolders.PicturesLibrary.CreateFileAsync("TestPhoto.jpg", CreationCollisionOption.GenerateUniqueName);
await mediaCapture.CapturePhotoToStorageFileAsync(imageFormat, photoFile);
BitmapImage bitmap = new BitmapImage();
using (var photoStream = await photoFile.OpenReadAsync())
{
bitmap.SetSource(photoStream);
}
}
редактировать
Я нашел решение. Фотография будет снята правильно, если у нас есть CaptureElement, установите его источник для объекта MediaCapture, вызовите MediaCapture.StartPreviewAsync перед тем, как сделать фотографию, сделайте фотографию (используя CapturePhotoToStorageFileAsync) и, наконец, вызовите StopPreviewAsync. Кажется, что MediaCapture нуждается в существующем (и отображаемом) предварительном просмотре, чтобы иметь возможность захватывать фотографии. Странно, что это не задокументировано, и использование CapturePhotoToStorageFileAsync без предварительного просмотра не вызывает исключение.