2016-04-28 4 views
0

Я пытаюсь использовать AdvancedPhotoCapture, чтобы получить SoftwareBitmap, но в результате CapturedPhoto.Frame.SoftwareBitmap имеет значение NULL. Как я могу получить SoftwareBitmap, чтобы я мог отображать его на экране?CapturedPhoto.Frame.SoftwareBitmap is null

//create mediacapture 
mediaCapture = new MediaCapture(); 
await mediaCapture.InitializeAsync(); 

// check if supported 
var settings = new AdvancedPhotoCaptureSettings 
{ 
    Mode = AdvancedPhotoMode.Standard 
}; 

//configure capture 
if (!mediaCapture.VideoDeviceController.AdvancedPhotoControl.SupportedModes.Contains(settings.Mode)) 
{ 
    Debug.WriteLine("Mode not supported"); 
    return; 
} 
mediaCapture.VideoDeviceController.AdvancedPhotoControl.Configure(settings); 
var adv = await mediaCapture.PrepareAdvancedPhotoCaptureAsync(ImageEncodingProperties.CreateJpeg()); 

// take photo 
var capturedPhoto = await adv.CaptureAsync(); 
Debug.WriteLine(capturedPhoto.Frame.SoftwareBitmap == null); 

ответ

1

Заменить

ImageEncodingProperties.CreateJpeg() 

с

ImageEncodingProperties.CreateUncompressed(MediaPixelFormat.Bgra8) 

Для AdvancedPhotoCapture, VariablePhotoSequence, LowLagCaptureSequence и т.д. SoftwareBitmap будет заполняться только при кодировании с несжатым форматом.