ArgumentException в растровом изображении (Size, ColorMode, Uint32, IBuffer)
В приложении-фильтре, над которым я работаю, я хочу добавить возможность захвата изображений и применять к ним фильтры с помощью Nokia Imaging SDK 1.1. Поиск в Интернете для захвата кода, я получил это:
await _cameraEffect.PhotoCaptureDevice.SetCaptureResolutionAsync(PhotoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back).First());
await _cameraEffect.PhotoCaptureDevice.FocusAsync();
CameraCaptureSequence sequence = _cameraEffect.PhotoCaptureDevice.CreateCaptureSequence(1);
MemoryStream imageStream = new MemoryStream();
imageStream.Seek(0, SeekOrigin.Begin);
sequence.Frames[0].CaptureStream = imageStream.AsOutputStream();
await _cameraEffect.PhotoCaptureDevice.PrepareCaptureSequenceAsync(sequence);
await sequence.StartCaptureAsync();
_cameraEffect.PhotoCaptureDevice.SetProperty(KnownCameraPhotoProperties.LockedAutoFocusParameters,AutoFocusParameters.None);
imageStream.Seek(0, SeekOrigin.Begin);
IBuffer frameBuffer = imageStream.GetWindowsRuntimeBuffer();
var frameSize = new Windows.Foundation.Size(_cameraEffect.PhotoCaptureDevice.CaptureResolution.Width, _cameraEffect.PhotoCaptureDevice.CaptureResolution.Height);
var scanlineByteSize = (uint)frameSize.Width * 4;
var bitmap = new Bitmap(frameSize, ColorMode.Bgra8888, scanlineByteSize, frameBuffer);
var renderer = new BitmapRenderer(new FilterEffect { Filters = _cameraEffect._filterEffect.Filters }, bitmap);
await renderer.RenderAsync();
Но когда я запускаю этот код, я получаю "{System.ArgumentException: параметр неверен.
в Nokia.Graphics.Imaging.Bitmap..ctor(размер размера, ColorMode colorMode, UInt32 scanlineByteSize, пиксели IBuffer) в RealtimeFilterDemo.MainPage.d_1b.MoveNext () --- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение - - в System.Runtime.CompilerServices.AsyncMethodBuilderCore.b_0 (состояние объекта)}".
Это брошено в
var bitmap = new Bitmap(frameSize, ColorMode.Bgra8888, scanlineByteSize, frameBuffer);
Означает ли это, что frameBuffer недействителен? И если так, как я могу это исправить? Я уже нашел несколько постов в блоге, посвященных этой проблеме, но они пришли к выводу, что они должны были использовать
imageStream.Seek(0, SeekOrigin.Begin);
и я уже добавил, что без каких-либо изменений в сообщении об ошибке.