C# 位图中的参数异常(大小、颜色模式、Uint32、IBuffer)

C# 位图中的参数异常(大小、颜色模式、Uint32、IBuffer),c#,windows-phone-8,nokia-imaging-sdk,lumia-imaging-sdk,C#,Windows Phone 8,Nokia Imaging Sdk,Lumia Imaging Sdk,在我正在开发的过滤器应用程序中,我希望通过使用诺基亚图像处理SDK 1.1添加捕获图像并对其应用过滤器的功能。 在互联网上搜索捕获代码,我得到以下信息: await _cameraEffect.PhotoCaptureDevice.SetCaptureResolutionAsync(PhotoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back).First()); await _cameraEffect.P

在我正在开发的过滤器应用程序中,我希望通过使用诺基亚图像处理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(大小、颜色模式、颜色模式、UInt32扫描线字节大小、IBuffer像素) 在RealtimeFilterDemo.MainPage.d_1b.MoveNext()上 ---来自引发异常的上一个位置的堆栈结束跟踪--- 在System.Runtime.CompilerServices.AsyncMethodBuilderCore.b_0(对象状态)}”中

它被抛向

var bitmap = new Bitmap(frameSize, ColorMode.Bgra8888, scanlineByteSize, frameBuffer);
这是否意味着帧缓冲区无效?如果是这样,我该如何解决这个问题? 我已经找到了一些关于这个问题的博客文章,但他们认为他们必须使用

imageStream.Seek(0, SeekOrigin.Begin);

我已经在错误消息中添加了这一信息。

您的图像大小是多少?内存不足也可能导致此错误。不要依赖于
位图的内容
构造函数的异常。任何异常都意味着出现了任何问题。即使我将resourcion设置为可能的最低捕获分辨率(640x480),它也会因相同的异常而崩溃。不知道:-(但如果我看到此api上的文档有多么“详尽”)我会两次问自己是否使用它。这是您传入的实际大小吗?如果传入的大小是大小(0,0),您也会得到一个例外。您确定IBuffer中的内容实际上是BGRA888吗?