我正在使用诺基亚成像 SDK 1.1 开发成像应用程序。一个看起来相当简单的任务(让用户选择一个图像并对其应用一些过滤器)目前阻止了我 2 天。我已经写了数百行并查看了所有的诺基亚开发示例(大多数时候,这些示例结构非常好,但对于像我这样的成像 SDK 初学者来说太复杂了),但我总是遇到以下异常:
{System.NullReferenceException: Invalid pointer at Nokia.Graphics.Imaging.BitmapRenderer.RenderAsync()
这是代码(为了简单起见,我减少了传递过滤器的部分,因此只传递了一个空的 FilterEffect):
PhotoChooserTask task = new PhotoChooserTask();
task.Completed += async (result,choosen) =>
{
Stream stream = choosen.ChosenPhoto;
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(stream);
WriteableBitmap bitmap = new WriteableBitmap(bitmapImage);
WriteableBitmapRenderer renderer = new WriteableBitmapRenderer(new FilterEffect(), bitmap, OutputOption.PreserveAspectRatio);
await renderer.RenderAsync();
};
task.ShowCamera = true;
task.Show();
因此,如果我对所有内容都理解得很好,那么应用程序就会崩溃,因为传递了某种无效的指针,但它有效的位图 - 或者至少它的大小是正确的,所以我猜,数据也已经传递了.
无论如何,这是堆栈跟踪
at Nokia.Graphics.Imaging.BitmapRenderer.RenderAsync()
at Nokia.Graphics.Imaging.WriteableBitmapRenderer.<<RenderAsync>b__0>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at RealtimeFilterDemo.MainPage.<<ShutterButton_Tap>b__1a>d__1c.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)