首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无效指针在Nokia.Graphics.Imaging.BitmapRender.RenderAsync()

无效指针在Nokia.Graphics.Imaging.BitmapRender.RenderAsync()
EN

Stack Overflow用户
提问于 2014-03-25 21:08:26
回答 1查看 329关注 0票数 1

我正在使用诺基亚成像SDK1.1开发一个成像应用程序。一个看起来相当简单的任务(让用户选择一个图像并对其应用一些过滤器)目前阻止了我,现在已经2天了。我已经编写了数百行代码,并对所有的Nokia Dev示例进行了回顾(大多数情况下,这些示例结构非常好,但对于像我这样的成像SDK初学者来说太复杂了),但我总是得到以下例外:

代码语言:javascript
复制
{System.NullReferenceException: Invalid pointer at Nokia.Graphics.Imaging.BitmapRenderer.RenderAsync()

这是代码(为了简单起见,我减少了传递过滤器的部分,以便传递一个空的FilterEffect ):

代码语言:javascript
复制
 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();

所以如果我对一切都很了解的话,这个应用程序就会崩溃,因为它传递了一些无效的指针,但是它的位图是有效的--或者至少它的大小是正确的,所以我想,数据也已经被传递了。

不管怎么说,这是堆栈

代码语言:javascript
复制
   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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-27 20:09:11

您没有为FilterEffect设置源映像,而是出于某种原因将源流直接传递到目标 WriteableBitmap。

启动RenderAsync操作时,FilterEffect Source属性为null,这就是导致异常的原因。您应该将图像源传递给FilterEffect构造函数,或者设置其source属性。

我推荐一个StreamImageSource,因为您有一个带有图像数据的System.IO.Stream。

从概念上讲,这就是如何看待它:

选择光流-> StreamImageSource -> FilterEffect -> WriteableBitmapRenderer ->可写位图

更具体而言:

代码语言:javascript
复制
using(var streamSource = new StreamImageSource(stream))
using(var filterEffect = new FilterEffect(streamSource, filters))
using(var writeableBitmapRenderer = new WriteableBitmapRenderer(filterEffect, writeableBitmap))
{
    await writeableBitmapRenderer.RenderAsync();
    ....
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22646280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档