位图中的ArgumentException(Size,ColorMode,Uint32,IBuffer)

时间:2014-03-23 13:54:47

标签: c# windows-phone-8 nokia-imaging-sdk lumia-imaging-sdk

在我正在处理的过滤器应用中,我希望使用诺基亚成像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);

我已经添加了错误信息而没有任何更改。

0 个答案:

没有答案